{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Loss Functions\n",
    "This document outlines a variety of different loss functions that we have discussed.\n",
    "\n",
    "## Notation\n",
    "We follow the notation in Schmidt et. al. as closely as possible\n",
    "\n",
    "- $D(I_a, I_b, u_a, u_b)$ is the L2 norm between descriptor of image $I_a$ at pixel $u_a$ and the descriptor of image $I_b$ at pixel $u_b$. \n",
    "- $\\Delta(u, u')$ is the L2 norm in pixel space between location $u$ and location $u'$.\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Background Non-Match Loss\n",
    "\n",
    "Randomly sample lots of background pixels, call them $U_b$. Then the loss is\n",
    "\n",
    "$$ loss = \\sum_{u_b \\in U_b} \\min\\left( M - D(I_a, u_a, I_b, u_b), 0  \\right) $$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Loss function to target \"best match\"\n",
    "\n",
    "One task that we are particularly interested in is given a pixel $u_a$ in image $I_a$, find the corresponding pixel $u_b^* = g(I_b, u_a)$. The best-match pixel $u_b'$ in image $I_b$ can be found by computing\n",
    "\n",
    "$$ u_b' = \\arg \\min_{u_b} D(I_a,u_a,I_b,u_b)$$\n",
    "\n",
    "Consider the non-match loss given by\n",
    "\n",
    "$$ l = \\sum_{u_b \\in I_b} \\min(\\Delta(u_b, u_b^*), M_p) \\cdot \\min\\left( M_d - \\frac{D(I_a, u_a, I_b, u_b)}{D(I_a, u_a, I_b, u_b^*)}, 0  \\right) $$\n",
    "\n",
    "Reasonable settings could be\n",
    "\n",
    "$$ M_p = 100, M_b = 1.5$$\n",
    "\n",
    "The idea is to penalize points that are within a fraction $M_b$ of l2 norm in descrptor space of the \"true match\" $u_b^*$. We also want to penalize more heavily points that are further away in pixel space.\n",
    "\n",
    "We could also \n",
    "\n",
    "### Variations\n",
    "There are multiple options for the second term in the above sum. A few options are listed below. It's unclear to me what the tradeoffs between these different fomulations are. Tanner et. al. uses a formulation like (2), while some of the other papers with triplet loss use something more similar to (1). \n",
    "\n",
    "1. $ \\min\\left( M - \\frac{D(I_a, u_a, I_b, u_b)}{D(I_a, u_a, I_b, u_b^*)}, 0  \\right)$\n",
    "2. $\\min\\left( M - D(I_a, u_a, I_b, u_b), 0  \\right)$\n",
    "3. $\\min\\left( M \\cdot D(I_a, u_a, I_b, u_b^*) - D(I_a, u_a, I_b, u_b), 0  \\right)$\n",
    "\n",
    "\n",
    "### Implementation Details\n",
    "\n",
    "If we implement the above over the \"entire\" image $I_b$ then this would be prohibitively expensive since for each choice of $u_a$ we would have to do the norm-diff over the entire image. One option is to heavily down-sample the number the masked image. Let $\\Gamma_b$ be the downsampled masked image. Then just sum over those pixels.`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Match-loss\n",
    "\n",
    "For matches we have simply:\n",
    "\n",
    "$$ loss =D(I_a, u_a, I_b, u_b)^2 $$\n",
    "\n",
    "This next mini section addresses whether or not we should square D or not.\n",
    "\n",
    "### L2 squared or not L2 squared?\n",
    "\n",
    "Consider three points, $A$, $B$, $C$ that should all be matches with each other.  Consider the L2 norms between them, call them $AB$, $BC$, and $CA$.\n",
    "\n",
    "If L2 is not squared, the these two situations have the same cost:\n",
    "\n",
    "$AB = BC = CA = 5 \\rightarrow \\sum(\\cdot) = 15$\n",
    "\n",
    "$AB = BC = 1, CA = 13 \\rightarrow \\sum(\\cdot) = 15$\n",
    "\n",
    "Whereas is L2 is squared, then the situation is much different:\n",
    "\n",
    "$AB = BC = CA = 5 \\rightarrow \\sum(\\cdot)^2 = 75$\n",
    "\n",
    "$AB = BC = 1, CA = 13 \\rightarrow \\sum(\\cdot)^2 = 171$\n",
    "\n",
    "#### Plotting the match loss\n",
    "\n",
    "It is dead simple but let's plot the match loss as a function of D:\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "x = np.arange(0,1,.001)\n",
    "y = x**2\n",
    "plt.plot(x,y)\n",
    "plt.title(\"Match loss\")\n",
    "plt.xlabel(\"D\")\n",
    "plt.ylabel(\"loss\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Two different types of non-match loss\n",
    "\n",
    "Consider the loss function for non-matches verbatim from Schmidt et al 2017:\n",
    "\n",
    "$$ loss = \\max(0, M - D(I_a, u_a, I_b, u_b) )^2 $$\n",
    "\n",
    "And consider the slight variation we have been using that performs approximately the same:\n",
    "\n",
    "$$ loss = \\max(0, M - D(I_a, u_a, I_b, u_b)^2 ) $$\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### First let's plot the Schmidt et al verbatim non-match-loss function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEWCAYAAACXGLsWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xl8VPW9//HXOwlh3wkoaxBBxRUNVNSqdSt6LbS3LthapbW16k+t1Xtbe2urtbf9ea+3tbetv6q11n1va7HVUuu+oQQVFRBFFgmLIPtigMDn98cc7BhDMkAmZ5K8n4/HwMxZP98zybxzzvfMOYoIzMzM6lOUdgFmZlb4HBZmZtYgh4WZmTXIYWFmZg1yWJiZWYMcFmZm1iCHhTUpSUdLqkq7jkLUGNtGUrmkkFSSvH5K0tcbp8IdriUk7dkE62nUnylJX5b098ZaXkvhsCgQkuZJWiqpY9awr0t6KsWyciLpKkl35mnZqX3YNaSuD8N8boumVDt0Wqq62hkRd0XECWnWVYgcFoWlGPhW2kWYNRctPcwKicOisFwL/JukbnWNlHSYpCmSVif/H5Y17ilJP5b0vKS1kv4uqdf2VpRM/5+SXpC0TtLDknpKukvSmmT55VnT/6+kBcm4qZI+nQwfA/wHcHqynGnJ8B6Sfi9pkaSVkh6qtf7Lkj2pxZK+ujMbS9JYSdMlrUras0/WuO9KWphsi1mSjk2Gj5JUmbTjfUk/35l170CNdW63ZFx7Sbcm22cGMLLWvNtrQ5GkyyW9K2m5pPsl9diJ2upbzjPJ/6uS93V0HfOPkvRisv0XS/q1pNIc1nu6pMpaw74taWLyvK2k/5H0XvIe3SCpfTLuaElVybZZAvw+axn/IemDZC/9y1nD/0XSq8l7sEDSVVmr/kQ7JU2Q9FzW/CHpAknvJO/FjyUNSX531iTbrcF2N3sR4UcBPIB5wHHAH4H/TIZ9HXgqed4DWAl8BSgBzkhe90zGPwW8CwwD2ievr6lnfU8Bs4EhQFdgBvB2UkMJcDvw+6zpzwR6JuMuA5YA7ZJxVwF31lr+X4H7gO5AG+CoZPjRQA1wdTL8JGAD0L2eOr9ex/BhwHrg+GQ530naUwrsBSwA+ibTlgNDkucvAl9JnncCDt2F9yyAPWsN+9i2aGC7XQM8m7y3A4A3gapkXH1t+BYwGegPtAVuBO7Jmi6Akvq2344uZzvzHwIcmrStHJgJXFLf9kmGdwDWAkOzhk0BxifPrwMmJtulM/Aw8H9r/fz8V1Jz+6xhP0+GHZX8bOyVNc/+ZP44PgB4H/j89toJTACeq9WOPwNdgH2BjcDjwB7883fn7LQ/Q/L9SL0AP5I34p9hsR+wGijj42HxFeDlWvO8CExInj8FXJE17gLgb/Ws7yng+1mvfwY8mvX6c8Br9cy/EjgweX4VH/+A3B3YSh0BkPzifljrl3Mp2/nQZvth8QPg/qzXRcDCZPl7Jss8DmhTa75ngB8BvRrhPQtgDbAq61FNreCsZ7vNAcZkjTuXf4ZFfW2YCRxba3tv5p8f2rmGRc7LyXF7XAL8qdb2+URYJOPuBH6YPB9KJjw6ACLzQT8ka9rRwNysn59NJIGbNawG6Jg17H7gB9tZ9y+A65Lnn2gndYfF4VmvpwLfrfW784td/Xkq9IcPQxWYiHgT+Atwea1RfYH5tYbNB/plvV6S9XwDmb+cSXbj1yWP/8ia5v2s5x/W8brTtheS/k3SzOQQ2Coyf1Ft7zDXAGBFRKzczvjlEVFTV6074GPbIyK2kvlLvF9EzCbzwXUVsFTSvZL6JpOeQ2av5K3kUNvJdS1c0qNZ2+zLdU2TODgium17kNlbyF5Ofdutb1LzNtntqa8Ng4A/JYd/VpH50N8C9Kmnzrrs0nIkDZP0F0lLJK0Bfsr2fyZqu5vM3jHAl4CHImIDmT+SOgBTs+r6WzJ8m2URUV1reSsjYn3W6/lkti+SPiXpSUnLJK0GztuBOrfJ+XelpXJYFKYrgW/w8SBYROaXO9tAMn9N1ysizouITsnjpztaTHKc/TvAaWT2FrqR2fvRtlXUmmUB0EPb6XtpJB/bHpJEJqQWAkTE3RFxRDJNkDlsQUS8ExFnAL2TYQ8q6wy0bSLixKxtdtfOFJjDdluc1LzNwFo11NkGMtv3xOyQioh2EdHgz0It9S0nl8tR/wZ4i8zhpC5k+q5U/ywfeQwok3QQmdC4Oxn+AZkP332zauoaEdkfxnXV1r3W+ziQzM8IybInAgMioitwA9v/2bXtcFgUoOSvyvuAi7MGPwIMk/QlSSWSTgeGk9kLybfOZHbzlwElkn5I5vjtNu8D5ZKKkvoXA48C/09Sd0ltJB25C+svkdQu69GGzGGGf5F0bPL6MjLHkl+QtJekYyS1JXNY6EMyh8WQdKaksmRPZFWy/K27UFt9Gtpu9wPfS7ZRf+CibSPqawOZD7ufSBqUTFsmadxO1FffcpYl69ujgfatAdZJ2hs4P9cVR8Rm4AEyJ3X0IBMe2/YQfwtcJ6l3Ulc/SZ/NYbE/klSahPTJyfK31bkiIqoljSKzJ7NNLu00HBaF7Grgo7+UImI5mV+Ay4DlZP5iPTkiPmiCWiaRORTwNpnd+2o+fvhk2y/lckmvJM+/Qub491tkjr1fsgvr/w2ZD8ttj99HxCwynce/IvPX6OeAz0XEJjKdnNckw5eQ2Yv4XrKsMcB0SeuA/yXTqfrhLtRWn4a224+S4XOBvwN3ZI2rrw3/S+Yv5b9LWkumk/pTO1HfdpeTHBL6CfB8cjjo0Drm/zcyH7xryXzA37eD67+bTJ/MA7UOS36XzMkKk5PDW/8g0+FfnyVk+oMWAXcB50XEW8m4C4Crkzb+kExIAzm30wAlHTRmZmbb5T0LMzNrkMPCzMwa5LAwM7MGOSzMzKxBLeYiXL169Yry8vK0yzAza1amTp36QUSUNTRdiwmL8vJyKisrG57QzMw+Iqn2lSHq5MNQZmbWIIeFmZk1yGFhZmYNcliYmVmDHBZmZtagvIaFpDHK3A5ytqTa92dA0qWSZkh6XdLj265+mYzbIum15DExn3WamVn98nbqrKRi4Hoyt72sAqZImhgRM7ImexWoiIgNks4H/hs4PRn3YUQclK/6zMwsd/ncsxgFzI6IOcllo+8FPnbN/Yh4MrlEMPzzXsBNatWGTVz32NvMWrK2qVdtZtZs5DMs+vHxa/dX8fE7v9V2Dpkb5mzTTlKlpMmSPl/XDJLOTaapXLZs2U4X+pun3+Xul3L6XoqZWatUEB3cks4EKsjcNWubQRFRQebmKr+QNKT2fBFxU0RURERFWVmD31avU7cOpYzZdzf+9OpCqjdv2allmJm1dPkMi4V8/P7C/anjftGSjgO+D4yNiI3bhm+7n3BEzAGeAkbkq9DxowawprqGR99cnK9VmJk1a/kMiynAUEmDJZUC48ncwvEjkkYAN5IJiqVZw7sn9x5GUi/gcCC7Y7xRjd6jJ+U9O3DPywsantjMrBXKW1gk99S9kMx9iGcC90fEdElXSxqbTHYt0Al4oNYpsvsAlZKmAU8C19Q6i6pRSeK0kQN4ee4K5ixbl6/VmJk1Wy3mHtwVFRWxK1edXbq2msP+7xOcc8RgvnfSPo1YmZlZ4ZI0NekfrldBdHAXgt6d23HsPr15cGoVm2q2pl2OmVlBcVhkGT9yIMvXb+Lxme+nXYqZWUFxWGQ5clgZfbu2454p7ug2M8vmsMhSXCROrRjAs+8sY8GKDQ3PYGbWSjgsajm1InPFkQemVqVciZlZ4XBY1NK/eweOHFrGA5UL2LK1ZZwpZma2qxwWdThj1AAWr67m6beXNjyxmVkr4LCowzF796FXp1Lu9Te6zcwAh0WdSkuK+OIh/Xn8raUsXVOddjlmZqlzWGzH+JED2bI13NFtZobDYrsG9+rI6D16cvdL77mj28xaPYdFPc48dBALV33ojm4za/UcFvU4Yd8+lHVuy12T30u7FDOzVDks6tGmuIjxIwfwxKylVK30N7rNrPVyWDTgjFEDEXDPy967MLPWy2HRgL7d2nPM3n24b8oCX7rczFoth0UOvnzoQD5Yt4lJ05ekXYqZWSocFjk4amgZA3q0587J89MuxcwsFQ6LHBQViS+NGsRLc1cwe+natMsxM2tyDoscnVbRn9LiIu70abRm1go5LHLUs1NbTtx/N/7wShUbNtWkXY6ZWZNyWOyAL39qEGura3h42qK0SzEza1IOix0wsrw7w/p08qEoM2t1HBY7QBJnHjqINxauZtqCVWmXY2bWZBwWO+gLI/rRsbSY216cl3YpZmZNxmGxgzq3a8Mph/TnL9MW88G6jWmXY2bWJBwWO+Gsw8rZtGUr97zkvgszax0cFjthSFknPj20F3e+NJ/NW3y9KDNr+RwWO2nCYeW8v2ajrxdlZq2Cw2InfWav3gzq2YFbn5+XdilmZnnnsNhJRUXiK4cOonL+St5cuDrtcszM8iqvYSFpjKRZkmZLuryO8ZdKmiHpdUmPSxqUNe5sSe8kj7PzWefOOrViAO3bFHPbC/PSLsXMLK/yFhaSioHrgROB4cAZkobXmuxVoCIiDgAeBP47mbcHcCXwKWAUcKWk7vmqdWd1bd+Gfz24H3+etogV6zelXY6ZWd7kc89iFDA7IuZExCbgXmBc9gQR8WREbLu59WSgf/L8s8BjEbEiIlYCjwFj8ljrTptwWDmbarb6tqtm1qLlMyz6AQuyXlclw7bnHODRHZlX0rmSKiVVLlu2bBfL3TlD+3Tm8D17ctfk+dT4NFoza6EKooNb0plABXDtjswXETdFREVEVJSVleWnuBycPbqcRaureWzG+6nVYGaWT/kMi4XAgKzX/ZNhHyPpOOD7wNiI2Lgj8xaKY/fpQ//u7bnVHd1m1kLlMyymAEMlDZZUCowHJmZPIGkEcCOZoFiaNWoScIKk7knH9gnJsIJUXCTOGp257er0RT6N1sxanryFRUTUABeS+ZCfCdwfEdMlXS1pbDLZtUAn4AFJr0mamMy7AvgxmcCZAlydDCtYp48cSIfSYn733Ny0SzEza3SKiLRraBQVFRVRWVmZag1XTZzOXS/N57nvHkOfLu1SrcXMLBeSpkZERUPTFUQHd0vxtcMHU7M1uP3FeWmXYmbWqBwWjWhgzw58dvhu3PXSe2zYVJN2OWZmjcZh0ci+/unBrNqwmT+8UrAnb5mZ7TCHRSM7ZFB3DhzQjVuem8vWrS2jP8jMzGHRyCTx9SMGM/eD9Tzx1tKGZzAzawYcFnlw4n670a9be25+bk7apZiZNQqHRR6UFBcx4bByJs9Z4XtdmFmL4LDIk9NHDaCjv6RnZi2EwyJPurRrw+kjB/LwtEUsWV2ddjlmZrvEYZFHXz28nK0R3PbivLRLMTPbJQ6LPBrQowNj9tuNuybPZ91Gf0nPzJovh0WenXvkENZU13Cv76RnZs2YwyLPDhrQjUP36MHNz85lU43vpGdmzZPDogmcf/SeLFlTzUOv+RIgZtY8OSyawJFDezF89y7c+PS7vgSImTVLDosmIIlvHrUH7y5bzz9m+j7dZtb8OCyayL/svzsDerTnhqffpaXccMrMWg+HRRMpKS7iG5/eg1feW8WUeSvTLsfMbIc4LJrQqYcMoEfHUm54+t20SzEz2yEOiybUvrSYCYeV88RbS3lryZq0yzEzy5nDoomdNXoQHUqLufFpX77czJoPh0UT69ahlPEjBzJx2iKqVm5Iuxwzs5w4LFLw9U8Ppkhw0zPeuzCz5sFhkYK+3drzxYP7c++UBSxd48uXm1nhc1ik5IKj92TL1vDehZk1Cw6LlAzs2YFxB/blrpfeY/m6jWmXY2ZWL4dFii74zJ5U12zxrVfNrOA5LFK0Z+9O/Mv+u3P7i/NZtWFT2uWYmW2XwyJlFx6zJ+s21nDrC/PSLsXMbLscFinbe7cunDC8D7c8N5e11ZvTLsfMrE55DQtJYyTNkjRb0uV1jD9S0iuSaiSdUmvcFkmvJY+J+awzbRcdM5Q11TXcMXl+2qWYmdUpb2EhqRi4HjgRGA6cIWl4rcneAyYAd9exiA8j4qDkMTZfdRaC/ft35ei9yrj52bls2FSTdjlmZp+Qzz2LUcDsiJgTEZuAe4Fx2RNExLyIeB1o9TenvuiYoaxYv4m7X3ov7VLMzD4hn2HRD1iQ9boqGZardpIqJU2W9Pm6JpB0bjJN5bJly3al1tQdMqg7hw3pyY3PzOHDTVvSLsfM7GMKuYN7UERUAF8CfiFpSO0JIuKmiKiIiIqysrKmr7CRXXLcMJat3cid7rswswKTz7BYCAzIet0/GZaTiFiY/D8HeAoY0ZjFFaJRg3vw6aG9uOHpd1m/0X0XZlY48hkWU4ChkgZLKgXGAzmd1SSpu6S2yfNewOHAjLxVWkC+ffwwlq/fxG0vzku7FDOzj+QtLCKiBrgQmATMBO6PiOmSrpY0FkDSSElVwKnAjZKmJ7PvA1RKmgY8CVwTEa0iLA4e2J3P7FXGTc/M8fcuzKxgKCLSrqFRVFRURGVlZdplNIo3qlbzuV8/x6XHD+PiY4emXY6ZtWCSpib9w/Uq5A7uVmv//l05fngffvvsHFZv8N6FmaXPYVGgvn3cMNZW1/C753y/CzNLn8OiQA3v24WT9t+NW56fx8r1viKtmaXLYVHALjluGOs31XDTs967MLN0OSwK2LA+nfncAX259fl5fOC76ZlZihwWBe5bxw1lY80Wrn9ydtqlmFkr5rAocEPKOnHqIQO4a/J7LFixIe1yzKyVclg0A5ccPxQJrnvs7bRLMbNWKqewkPQtSV2U8bvkhkUn5Ls4y9i9a3smHFbOn15byFtL1qRdjpm1QrnuWXwtItYAJwDdga8A1+StKvuE848eQqe2JVz7t1lpl2JmrVCuYaHk/5OAOyJietYwawLdOpRy3lFDePytpUyZtyLtcsyslck1LKZK+juZsJgkqTO+u12T+9rhg+nduS3XPPoWLeWaXmbWPOQaFucAlwMjI2ID0Ab4at6qsjq1Ly3mW8cNZer8lfxj5tK0yzGzViTXsBgNzIqIVZLOBK4AVuevLNue0yoGMLhXR66d9BZbtnrvwsyaRq5h8Rtgg6QDgcuAd4Hb81aVbVeb4iIuO2EYb7+/jj++UpV2OWbWSuQaFjWROUg+Dvh1RFwPdM5fWVafk/bbnQP7d+Vnf3+bDZt8+1Uzy79cw2KtpO+ROWX2r5KKyPRbWAqKisQVJw9nyZpqfvvM3LTLMbNWINewOB3YSOb7FkuA/sC1eavKGjSyvAcn7rcbNzz9Lu+vqU67HDNr4XIKiyQg7gK6SjoZqI4I91mk7PIT96Zm61Z+9nd/Uc/M8ivXy32cBrwMnAqcBrwk6ZR8FmYNG9SzI2ePLueBqVXMWOTLgJhZ/uR6GOr7ZL5jcXZEnAWMAn6Qv7IsVxcdM5Su7dvwk0dm+It6ZpY3uYZFUURkfwts+Q7Ma3nUtUMbLjl2KM/PXs6Ts/xFPTPLj1w/8P8maZKkCZImAH8FHslfWbYjvnzoIPbo1ZGf/HUmm7f4Kixm1vhy7eD+d+Am4IDkcVNEfDefhVnu2hQX8b2T9uHdZeu55+X30i7HzFqgklwnjIg/AH/IYy22C47bpzej9+jJzx97m88d0JfuHUvTLsnMWpB69ywkrZW0po7HWkk+/aaASOKqsfuytrqGnz3mU2nNrHHVGxYR0TkiutTx6BwRXZqqSMvNXrt15iuHDuLul95j+iJf59HMGo/PaGphvn38MLp3KOWqidN9Kq2ZNRqHRQvTtX0bvjNmL6bMW8mfX1uUdjlm1kI4LFqgUw8ZwIH9u/LTR2aybqOvSmtmu85h0QIVFWU6u5eu3civnngn7XLMrAXIa1hIGiNplqTZki6vY/yRkl6RVFP7WlOSzpb0TvI4O591tkQjBnbn1EP6c8tzc3l32bq0yzGzZi5vYSGpGLgeOBEYDpwhaXityd4DJgB315q3B3Al8Cky16G6UlL3fNXaUn1nzN60KynmRw/7ulFmtmvyuWcxCpgdEXMiYhNwL5k77X0kIuZFxOtA7WtUfBZ4LCJWRMRK4DFgTB5rbZHKOrfl0hOG8czby/jrG4vTLsfMmrF8hkU/YEHW66pkWKPNK+lcSZWSKpctW7bThbZkZ40uZ79+XfjRwzNYU7057XLMrJlq1h3cEXFTRFREREVZWVna5RSk4iLx0y/sz/J1G/mfSf5mt5ntnHyGxUJgQNbr/smwfM9rtRzQvxtnjS7njsnzeW3BqrTLMbNmKJ9hMQUYKmmwpFJgPDAxx3knASdI6p50bJ+QDLOddNkJw+jduS3/8cc3qPFlzM1sB+UtLCKiBriQzIf8TOD+iJgu6WpJYwEkjZRUReZ2rTdKmp7MuwL4MZnAmQJcnQyzndS5XRuu/Ny+zFi8hltfmJd2OWbWzKilnFJZUVERlZWVaZdR0CKCc26rZPKc5Tx26VH069Y+7ZLMLGWSpkZERUPTNesObtsxkvjR2H3ZGsGVf37T370ws5w5LFqZAT06cNnxe/GPmUt5+HV/98LMcuOwaIW+dsRgDhzQjasmTmf5uo1pl2NmzYDDohUqLhLXnnIAa6s3c+XE6WmXY2bNgMOilRrWpzMXHzOUv7y+mEnTl6RdjpkVOIdFK3be0UMYvnsXrnjoTVZv8KVAzGz7HBatWJviIv77lANYsX4TP/7rjLTLMbMC5rBo5fbr15XzjxrCg1OreGrW0rTLMbMC5bAwLjp2T4b27sR3//A6qzZsSrscMytADgujbUkx151+EMvXbeIHf/bZUWb2SQ4LAzKHoy45bigPT1vExGmL0i7HzAqMw8I+ct5RQxgxsBtX/OkNlqyuTrscMysgDgv7SElxEdeddhCbtwT//uA0tm71taPMLMNhYR9T3qsjV5y8D8++8wF3TJ6fdjlmViAcFvYJXxo1kM/sVcZPH5nJ7KXr0i7HzAqAw8I+QRL/9cUD6FBazMX3vEr15i1pl2RmKXNYWJ16d2nHz047kBmL13DNo2+lXY6ZpcxhYdt1zN59OOeIwdz6wjxfbNCslXNYWL2+M2Yv9u/Xle88+DoLV32YdjlmlhKHhdWrbUkxvzpjBFu2Bt+651VqtmxNuyQzS4HDwhpU3qsjP/nCflTOX8kv/vFO2uWYWQocFpaTcQf147SK/lz/1GyefWdZ2uWYWRNzWFjOrhq7L0N7d+Lie151/4VZK+OwsJx1KC3hhjMPYfOW4II7p7Kxxt+/MGstHBa2Q/Yo68T/nHog06pW86OHfXc9s9bCYWE7bMx+u3H+0UO4+6X3uL9yQdrlmFkTcFjYTrns+GEcvmdPrnjoTd5cuDrtcswszxwWtlNKiov45fgR9OxYyjfvmMrydRvTLsnM8shhYTutZ6e23HDmIXywbiPnucPbrEVzWNguOXBAN6499UCmzFvJFX96kwjfMMmsJcprWEgaI2mWpNmSLq9jfFtJ9yXjX5JUngwvl/ShpNeSxw35rNN2zdgD+3LxMXvywNQqbn52btrlmFkelORrwZKKgeuB44EqYIqkiRGRfb7lOcDKiNhT0njgv4DTk3HvRsRB+arPGtclxw1j9rJ1/PTRmQzp3ZFj9u6Tdklm1ojyuWcxCpgdEXMiYhNwLzCu1jTjgNuS5w8Cx0pSHmuyPCkqEj879SD27duFi+95jVlL1qZdkpk1onyGRT8g+yT8qmRYndNERA2wGuiZjBss6VVJT0v6dF0rkHSupEpJlcuW+XpFaWtfWsxvz6qgQ2kxE37/MktWV6ddkpk1kkLt4F4MDIyIEcClwN2SutSeKCJuioiKiKgoKytr8iLtk3bv2p7ff3Uka6trmPD7l1lTvTntksysEeQzLBYCA7Je90+G1TmNpBKgK7A8IjZGxHKAiJgKvAsMy2Ot1oj27duVG848hNlL1/HN231KrVlLkM+wmAIMlTRYUikwHphYa5qJwNnJ81OAJyIiJJUlHeRI2gMYCszJY63WyI4Y2otrTz2AF+cs598eeJ2tW31KrVlzlrezoSKiRtKFwCSgGLglIqZLuhqojIiJwO+AOyTNBlaQCRSAI4GrJW0GtgLnRcSKfNVq+fGFEf15f81Grnn0Lfp0bssVJw9PuyQz20l5CwuAiHgEeKTWsB9mPa8GTq1jvj8Af8hnbdY0vnnkHixZXc3Nz82le8dS/s9n9ky7JDPbCXkNCzNJ/PDk4az+cDPXTppF+zbFfO2IwWmXZWY7yGFheVdUJK495QA+3LSFq/8ygw6lxYwfNTDtssxsBxTqqbPWwpQUF/HLM0Zw9F5lfO9Pb/Dn12qfGGdmhcxhYU2mtKSIG848hE8N7sGl90/jkTcWp12SmeXIYWFNql2bYm4+eyQjBnTjonte9R6GWTPhsLAm16ltCbd9bRQVg7rz7fte48GpVWmXZGYNcFhYKjq2LeHWr47isCG9+PcHp3Hvy++lXZKZ1cNhYalpX1rMzWdXcOTQMi7/4xvc+rzvhWFWqBwWlqp2bYq56axDOGF4H656eAb/M2mW77ZnVoAcFpa6tiXF/L8vH8wZowbw6ydn890/vE7Nlq1pl2VmWfylPCsIJcVF/PQL+1PWqS2/fGI2K9Zv4ldnHEz70uK0SzMzvGdhBUQSl56wFz8ety+Pv7WUL908mWVrN6ZdlpnhsLAC9JXR5fzmywczc/EaPn/988xYtCbtksxaPYeFFaQx++3OA988jC1bg1NueIFJ05ekXZJZq+awsIK1f/+uTLzwcIb27sQ375jK9U/O9plSZilxWFhB692lHfd9czTjDurLtZNmce4dU1m9wff1NmtqDgsreO3aFPOL0w/iBycP58m3lnLyr5/ljarVaZdl1qo4LKxZkMQ5Rwzmvm+OpmZL8MXfvMAdk+f7sJRZE3FYWLNyyKDu/PXiTzN6SE9+8NCbfOP2Sp9ea9YEHBbW7PToWMrvJ4zkBycP55l3PuCzv3iGv73ps6XM8slhYc1SUVHmsNRfLjqC3bu247w7p3LZ/dNYtWFT2qWZtUgOC2vWhvXpzJ8uOJyLjtmTh15byLE/e5qHXl3ovgyzRuawsGavtKSIy07Yi4cvPIKHVAA/AAAIVklEQVT+PTpwyX2vcdYtLzN/+fq0SzNrMRwW1mIM79uFP55/GFeP25dX31vF8dc9wzWPvsWaan8vw2xXOSysRSkuEmeNLufxy47i5AN254an3+Xoa5/i9hfnsdmXPTfbaQ4La5H6dGnHz087iL9cdATD+nTih3+ezmeve4Y/vlLle2WY7QSHhbVo+/Xryj3fOJTfnlVBaUkRl94/jWN//jT3T1ngPQ2zHaCWctZIRUVFVFZWpl2GFbCtW4N/zHyfXz7xDm8uXEPfru04c/Qgxo8cSI+OpWmXZ5YKSVMjoqLB6RwW1tpEBE/OWspvn5nLi3OW07akiLEH9uVLnxrIQQO6ISntEs2aTK5h4duqWqsjiWP27sMxe/fh7ffXctsL8/jjKwt5YGoVe/TqyOdH9OMLI/oxoEeHtEs1KxjeszAD1lRv5m9vLOGPr1Yxec4KAIbv3oXj9unNsfv0Yf9+XSkq8h6HtTwFcRhK0hjgf4Fi4OaIuKbW+LbA7cAhwHLg9IiYl4z7HnAOsAW4OCIm1bcuh4U1lqqVG/jL64t5fOb7TJ2/kq0BPTuWMrK8ByMH92BUeQ/23r0zbYp9fog1f6mHhaRi4G3geKAKmAKcEREzsqa5ADggIs6TNB74QkScLmk4cA8wCugL/AMYFhFbtrc+h4Xlw4r1m3hq1lKee+cDXp63gqqVHwJQWlzEHmUd2Xu3zgzbrTP9u3egb9d27N6tPWWd2lJa4iCx5qEQ+ixGAbMjYk5S0L3AOGBG1jTjgKuS5w8Cv1amd3EccG9EbATmSpqdLO/FPNZr9gk9Opbyrwf3518P7g/A4tUfMmXeSqYvWs2sJWt5ae4KHnpt0SfmKy0polPbEjq2LaZNURIc+ud/2zrRfWDLGsPeu3fhV2eMyOs68hkW/YAFWa+rgE9tb5qIqJG0GuiZDJ9ca95+tVcg6VzgXICBAwc2WuFm27N71/aMPbA9Yw/s+9GwtdWbWby6mkWrPmTx6mo+WLuRdZtqWL+xhvUbt1CzNT66sGF89A8ELaO/0NI3oHv7vK+jWZ8NFRE3ATdB5jBUyuVYK9W5XRs6t2vDsD6d0y7FLG/yeWB1ITAg63X/ZFid00gqAbqS6ejOZV4zM2si+QyLKcBQSYMllQLjgYm1ppkInJ08PwV4IjL76xOB8ZLaShoMDAVezmOtZmZWj7wdhkr6IC4EJpE5dfaWiJgu6WqgMiImAr8D7kg6sFeQCRSS6e4n0xleA/yf+s6EMjOz/PKX8szMWrFcT531yeBmZtYgh4WZmTXIYWFmZg1yWJiZWYNaTAe3pGXA/F1YRC/gg0Yqp7lwm1u+1tZecJt31KCIKGtoohYTFrtKUmUuZwS0JG5zy9fa2gtuc774MJSZmTXIYWFmZg1yWPzTTWkXkAK3ueVrbe0Ftzkv3GdhZmYN8p6FmZk1yGFhZmYNalVhIWmMpFmSZku6vI7xbSXdl4x/SVJ501fZuHJo86WSZkh6XdLjkgalUWdjaqjNWdN9UVJIavanWebSZkmnJe/1dEl3N3WNjS2Hn+2Bkp6U9Gry831SGnU2Jkm3SFoq6c3tjJekXybb5HVJBzfayiOiVTzIXCb9XWAPoBSYBgyvNc0FwA3J8/HAfWnX3QRt/gzQIXl+fmtoczJdZ+AZMrfvrUi77iZ4n4cCrwLdk9e90667Cdp8E3B+8nw4MC/tuhuh3UcCBwNvbmf8ScCjZG7vfijwUmOtuzXtWYwCZkfEnIjYBNwLjKs1zTjgtuT5g8CxktSENTa2BtscEU9GxIbk5WQydyVsznJ5nwF+DPwXUN2UxeVJLm3+BnB9RKwEiIilTVxjY8ulzQF0SZ53BRY1YX15ERHPkLn3z/aMA26PjMlAN0m7N8a6W1NY9AMWZL2uSobVOU1E1ACrgZ5NUl1+5NLmbOeQ+aukOWuwzcmu+YCI+GtTFpZHubzPw4Bhkp6XNFnSmCarLj9yafNVwJmSqoBHgIuaprRU7ejvfM7ydqc8a14knQlUAEelXUs+SSoCfg5MSLmUplZC5lDU0WT2Hp+RtH9ErEq1qvw6A7g1In4maTSZu3LuFxFb0y6sOWpNexYLgQFZr/snw+qcRlIJmV3X5U1SXX7k0mYkHQd8HxgbERubqLZ8aajNnYH9gKckzSNzXHdiM+/kzuV9rgImRsTmiJgLvE0mPJqrXNp8DnA/QES8CLQjc8G9liyn3/md0ZrCYgowVNJgSaVkOrAn1ppmInB28vwU4IlIeo2aqQbbLGkEcCOZoGjux7GhgTZHxOqI6BUR5RFRTqafZmxENOd78ubys/0Qmb0KJPUic1hqTlMW2chyafN7wLEAkvYhExbLmrTKpjcROCs5K+pQYHVELG6MBbeaw1ARUSPpQmASmTMpbomI6ZKuBiojYiLwOzK7qrPJdCKNT6/iXZdjm68FOgEPJH3570XE2NSK3kU5trlFybHNk4ATJM0AtgD/HhHNdq85xzZfBvxW0rfJdHZPaOZ//CHpHjKh3yvpi7kSaAMQETeQ6Zs5CZgNbAC+2mjrbubbzszMmkBrOgxlZmY7yWFhZmYNcliYmVmDHBZmZtYgh4WZmTWo1Zw6a9bUJG0B3iBzamMNcDtwnb9BbM2Rw8Isfz6MiIMAJPUG7iZzYbsrU63KbCf4exZmeSJpXUR0ynq9B5lvHvdq7l8Os9bHfRZmTSQi5pD5tnHvtGsx21EOCzMza5DDwqyJJIehtgAt4YKN1so4LMyagKQy4Abg1+6vsObIHdxmeVLHqbN3AD/3qbPWHDkszMysQT4MZWZmDXJYmJlZgxwWZmbWIIeFmZk1yGFhZmYNcliYmVmDHBZmZtag/w9J5RiGd81HIAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "x = np.arange(0,1,.001)\n",
    "M = 0.5\n",
    "y = M - x\n",
    "y = np.where(y>0,y,0)\n",
    "y = y**2\n",
    "plt.plot(x,y)\n",
    "plt.title(\"Non-match Loss - Hadsell et al verbatim\")\n",
    "plt.xlabel(\"D\")\n",
    "plt.ylabel(\"loss\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Now let's plot the variation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "x = np.arange(0,1,.001)\n",
    "M = 0.5\n",
    "y = M - x**2\n",
    "y = np.where(y>0,y,0)\n",
    "plt.plot(x,y)\n",
    "plt.title(\"Non-match Loss - variation\")\n",
    "plt.xlabel(\"D\")\n",
    "plt.ylabel(\"loss\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAEWCAYAAAB1xKBvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3XuYXXV97/H3Zy6ZXGZyn9zvCYSLQIAxgFLEU0WwSrClGqxKRZtipdVebPHoER98Wq0+rdaCItocxHLxViGnBREURFQuEwyXAIFJICQTkgy535OZ+Z4/1gpshplkTzJr1t57Pq/n2Zm91/qtvb+zZmc+s9bvt9dPEYGZmdnhVOVdgJmZlQcHhpmZFcWBYWZmRXFgmJlZURwYZmZWFAeGmZkVxYFhVgRJl0u6J+86Ckmqk7RT0qS8a7GBwYFhFSP95Xnw1ilpT8HjP8m7vr4WEfsioj4i1uVdiw0MNXkXYNZXIqL+4H1JLwAfjYiSOiroLUk1EdGedx1m4CMMG0AkvVnSQ5K2Slon6auSatJ1gyWFpEWSVkraIumrr38KfT3dfqWkt/XwOldJ+s8uy74l6cvp/dGSbpS0XtKatH1Vuu5ySb+QdK2kLcCVko6T9ICkbZLaJN3YpeYpBc97c9rmeUl/L0kFz/vzYuo364kDwwaSA8AVwBjg94B3Ax/t0uZ84FTgNODDks4tWHcO0Jxufw3wnR5e5xZggaQhAJJqgYuBm9P1NwHbgFnAfOAi4INdXmcZMBb4F+CLwG3ASGAa8K0eXvc6oBaYCbwd+Bjw/iOo36xbDgwbMCLi4Yh4JCI6ImIlyS/Mt3Rp9k8RsT0ingfuB+YVrFsRETdGRAfwXWC6pJHdvM6zwAqSQIIkhDZExDJJ00l+cf9NROyOiJeArwMLC55iVUR8O61zD0nQzQAmRMSeiPh119eUVAf8EfAPEbEzIlqAr/HaICqqfrOeODBswJB0gqQ7JW2QtB34HMlf8YXWF9zfDdQfYh1d1he6Gbgkvf9+kqMKgOnAYKAtPTW0Ffg3YHzBtmu6PNdfA0OB30l6XNIHunm9CST/n18sWLYamHyE9Zu9jgPDBpJvA48CsyNiOHA1oIxe6/vAOyRNJjnSOHg6ag2wExgVESPT2/CIOK1g29dcQjoiWiPiMmAi8FfAYknTurzeeqCT5JTVQdOA1j77jmzAc2DYQNIAbIuInZJOBP4sqxeKiFbgIeAG4In0FBfp1weBL0tqkFQl6RhJZ/f0XJLeJ2lSJHMRbE0Xd3R5vX3AT4B/kjRM0mzgE8B/YtZHHBg2kPw18FFJO4FrSY4CsnQz8DZePbo46BKSDuxngM1pHePp2VnA0rTuHwKL0kDq6s/Tr6uBX5D00dzUTTuzIyJPoGRmZsXwEYaZmRXFgWFmZkVxYJiZWVEcGGZmVpSKuvjg2LFjY8aMGXmXYWZWNpYuXfpyRDQW07aiAmPGjBk0NzfnXYaZWdmQtLrYtj4lZWZmRXFgmJlZURwYZmZWFAeGmZkVxYFhZmZFySwwJE2VdK+kpyQtl/SJbtocnPKyJb3O/2kF6y6V9Fx6uzSrOs3MrDhZDqttB/42Ih6V1EBytc27I+KpgjYXAMektzOAbwJnSBoNXAU0kcwNsFTSkojYkmG9ZmZ2CJkFRjr15Evp/R2SniaZ/aswMBYAN6bX+X9Q0khJE4FzgbsjYjOApLtJprm8JYtav/7z52jv6Hx1gV6dU6dwdh11mWpHBWsL13Wdkec167o+SU/tenjuQ9WkLq/c00uph+/v9c/X/TaHatf1RYuptboKBtVUMai6OvlaU8Wg6uRrXfq4vq6GEUNqGTqo+pD70Myy0y8f3JM0AziVZEKZQpN57XSUa9NlPS3v7rkXAYsApk3rOglZca775Ur2HEjmo/HV3ktbTZUYMaSWEUNqGVM/iEkjhzB55BAmjxrCzDHDOGHScEYOHZR3mWYVKfPAkFQP/Bj4ZERs7+vnj4jrgesBmpqajujX/VNXn1/M63R5XHD/UO163Kbn5zvU8sLtjrYGjuC5uz5/j8/d5fl6uAtAe2ewv73z1VtHB/sKHu9r72Tnvna27TnwmtvLO/axdPUW/ufxl2jvfPVZJ48cwslTRnD2MWM555hGpo4eipkdvUwDQ1ItSVjcFBH/1U2TVmBqweMp6bJWktNShcvvy6bK4hzqlEyXlpnXYq/V0Rls2L6XlW07Wb5uO8vXbWfpC5u588n1AJw4aTgXnz6Fi+ZNZtQwH32YHanMZtxT8hv2u8DmiPhkD23+ALgCeCdJp/fXI2J+2um9FDg4aupR4PSDfRo9aWpqCl9LyiA5ClrZtov7Vmzk9mXreKJ1G0Nqq/nAmdNYdM5sGhvq8i7RrCRIWhoRTUW1zTAwzgZ+BTwBHOxR/t/ANICIuC4NlWtIOrR3Ax+OiOZ0+8vS9gD/GBH/93Cv6cCwnjz90na+ff8qblvWytBBNXzqHXP5wJnTqa7yEaENbCURGHlwYNjhrGrbyVVLlvOr515m/szRXPP+UxnXMDjvssxy05vA8Ce9bUCZ1VjPjZfN5ysXn8zja7fyrq8/wBNrt+VdlllZcGDYgCOJP26aym0ffzODaqp4/7cfpPmFQ3aPmRkODBvAjpswnB9efhaNDXV8aPHDPNnqIw2zQ3Fg2IA2ccQQbll0JiOH1HLZDY+wbuuevEsyK1kODBvwxg8fzOIPv5Hd+zv4+M2PcqDwMjFm9goHhhnJ6akv/uFJ/O7FrfzbPc/lXY5ZSXJgmKXefcok/vj0KVx7X4tHTpl1w4FhVuD/vPsExgyr47O3PUFHZ+V8RsmsLzgwzAoMH1zLZ//geB5bu40fNK85/AZmA4gDw6yLBfMmcfr0UXztnmfZm1723swcGGavI4m/O28uG7bv46aHXsy7HLOS4cAw68ZZs8fw5jlj+Ma9LT7KMEs5MMx6cMVbj2HTrv3c9rvWvEsxKwkODLMenDlrNCdMHM7iXz//ulkMzQYiB4ZZDyRx2dkzeXbDTh5oeTnvcsxy58AwO4R3nzKRMcMGcbM7v82yCwxJiyVtlPRkD+s/JWlZentSUkc6NSuSXpD0RLrOMyJZbupqqrno1Mnc8/QGtuzan3c5ZrnK8gjjBpKpV7sVEV+JiHkRMQ/4NPDLLnN2vzVdX9RMUGZZufj0KRzoCG5f5s5vG9gyC4yIuB8odlaaS4BbsqrF7GgcP3E4J04azg+Xrs27FLNc5d6HIWkoyZHIjwsWB/AzSUslLTrM9oskNUtqbmtry7JUG8D+8LQpLF+3nVVtO/MuxSw3uQcG8G7g111OR50dEacBFwAfl3ROTxtHxPUR0RQRTY2NjVnXagPUBW+YAMCdT67PuRKz/JRCYCyky+moiGhNv24EfgLMz6Eus1dMGjmEU6aO5KcODBvAcg0MSSOAtwC3FywbJqnh4H3gPKDbkVZm/emCN0zgidZtrNm8O+9SzHKR5bDaW4DfAnMlrZX0EUmXS7q8oNl7gJ9FxK6CZeOBByQ9BjwM/E9E/DSrOs2KdfC01F3LfZRhA1NNVk8cEZcU0eYGkuG3hctWAadkU5XZkZs+ZhjHjq/nvhVtfPT3ZuVdjlm/K4U+DLOy8ZZjG3n4+c3s3t+edylm/c6BYdYLbzl2HPs7Onlw1aa8SzHrdw4Ms15448xRDKmt5pcr/JkfG3gcGGa9UFdTzZtmj+G+Zx0YNvA4MMx66ZxjG1m9abeH19qA48Aw66UzZ40BcD+GDTgODLNeOmZcPaOG1vLQ88VeW9OsMjgwzHqpqkrMnzmah573EYYNLA4MsyNwxswxrNm8h3Vb9+Rdilm/cWCYHYEzZo0G8FGGDSgODLMjcNyE4QwfXMNDq9yPYQOHA8PsCFRXiaYZo1m6ekvepZj1GweG2RGaN3UkLW072b73QN6lmPULB4bZETp12kgi4PE12/IuxaxfODDMjtDJU0YC8LsXfVrKBgYHhtkRGjGkljnj6lm2ZmvepZj1iyxn3FssaaOkbqdXlXSupG2SlqW3zxWsO1/SCkktkq7MqkazozVv6kiWrdlKRORdilnmsjzCuAE4/zBtfhUR89Lb1QCSqoFrgQuAE4BLJJ2QYZ1mR+zUaSPZtGs/azb7A3xW+TILjIi4HziSQerzgZaIWBUR+4FbgQV9WpxZH5k3Ne3HWON+DKt8efdhnCXpMUl3SjoxXTYZWFPQZm26rFuSFklqltTc1uY5Cqx/zR3fQF1NFU+s9Ugpq3x5BsajwPSIOAX4d+C2I3mSiLg+IpoioqmxsbFPCzQ7nJrqKo6bOJzl67bnXYpZ5nILjIjYHhE70/t3ALWSxgKtwNSCplPSZWYl6cRJw1m+bps7vq3i5RYYkiZIUnp/flrLJuAR4BhJMyUNAhYCS/Kq0+xwTpw0nO1721m7xR3fVtlqsnpiSbcA5wJjJa0FrgJqASLiOuBi4GOS2oE9wMJI/kRrl3QFcBdQDSyOiOVZ1Wl2tN4waQQAT7ZuY+rooTlXY5adzAIjIi45zPprgGt6WHcHcEcWdZn1tbkTGqiuEsvXbeeCkybmXY5ZZvIeJWVW9gbXVjOnsZ7l6zxSyiqbA8OsD5w4eThPeqSUVTgHhlkfOHHSCNp27GPjjr15l2KWGQeGWR84cdJwAH8ewyqaA8OsDxw/IQmMZ17akXMlZtlxYJj1gRFDa5k4YjDPbnBgWOVyYJj1kWPHN/DMegeGVS4HhlkfOW5CAys37qS9ozPvUswy4cAw6yPHjm9gf0cnL2zalXcpZplwYJj1kbkTGgBYsX5nzpWYZcOBYdZH5oyrp0qwYr2H1lplcmCY9ZHBtdXMGDuMFR4pZRXKgWHWh+aOb2CFR0pZhXJgmPWhuRMaWL15N3v2d+Rdilmfc2CY9aG54xuIgOc2+ijDKk9mgSFpsaSNkp7sYf2fSHpc0hOSfiPplIJ1L6TLl0lqzqpGs7726kgpB4ZVniyPMG4Azj/E+ueBt0TEScAXgOu7rH9rRMyLiKaM6jPrc9PHDGNQTZUvEWIVKcsZ9+6XNOMQ639T8PBBYEpWtZj1l+oqMWvsMFa2+cN7VnlKpQ/jI8CdBY8D+JmkpZIWHWpDSYskNUtqbmtry7RIs2LMHldPy0Z/eM8qT+6BIemtJIHxDwWLz46I04ALgI9LOqen7SPi+ohoioimxsbGjKs1O7w5jfWs2bKbvQc8UsoqS66BIelk4DvAgojYdHB5RLSmXzcCPwHm51OhWe/NGVdPBKzyaSmrMLkFhqRpwH8BH4yIZwuWD5PUcPA+cB7Q7Ugrs1I0Z1w9AC1tPi1llSWzTm9JtwDnAmMlrQWuAmoBIuI64HPAGOAbkgDa0xFR44GfpMtqgJsj4qdZ1WnW12aOHUaVcD+GVZwsR0ldcpj1HwU+2s3yVcApr9/CrDwMrq1m6uihrHRgWIXJvdPbrBLNafRIKas8DgyzDMwZV8/zL+/y7HtWURwYZhmYPa6e/R2drNmyJ+9SzPqMA8MsAwdHSrkfwyqJA8MsAx5aa5XIgWGWgeGDaxnXUOeOb6soDgyzjMzxNaWswjgwzDIyu7GelRt3EhF5l2LWJxwYZhmZM66eHfva2bhjX96lmPUJB4ZZRl7p+PZpKasQDgyzjLwytNYjpaxCODDMMjKuoY6GuhofYVjFcGCYZUQSs8bV+wjDKkZRgSHpE5KGK/Efkh6VdF7WxZmVO1+E0CpJsUcYl0XEdpLJjEYBHwS+lFlVZhVi9rhhbNi+jx17D+RditlRKzYwlH59J/C9iFhesMzMejCn8WDHt6drtfJXbGAslfQzksC4K51C9bDXbZa0WNJGSd1OsZqe4vq6pBZJj0s6rWDdpZKeS2+XFlmnWUmZ7YsQWgUpNjA+AlwJvDEidpNMtfrhIra7ATj/EOsvAI5Jb4uAbwJIGk0ypesZwHzgKkmjiqzVrGRMGz2U2mr5IoRWEYoNjLOAFRGxVdIHgM8C2w63UUTcD2w+RJMFwI2ReBAYKWki8A7g7ojYHBFbgLs5dPCYlaTa6iqmjxnmIwyrCMUGxjeB3ZJOAf4WWAnc2AevPxlYU/B4bbqsp+WvI2mRpGZJzW1tbX1Qklnfmt04zEcYVhGKDYz2SK6gtgC4JiKuBRqyK6t4EXF9RDRFRFNjY2Pe5Zi9zpxx9by4aTcHPF2rlbliA2OHpE+TDKf9H0lVJP0YR6sVmFrweEq6rKflZmVndmM97Z3B6k0eKWXlrdjAeB+wj+TzGOtJfoF/pQ9efwnwoXS01JnAtoh4CbgLOE/SqLSz+7x0mVnZefUihA4MK281xTSKiPWSbgLeKOldwMMRcdg+DEm3AOcCYyWtJRn5VJs+53XAHSRDdVuA3aQjryJis6QvAI+kT3V1RByq89ysZM1q9EUIrTIUFRiS3ktyRHEfyQf2/l3SpyLiR4faLiIuOcz6AD7ew7rFwOJi6jMrZfV1NUwcMdgjpazsFRUYwGdIPoOxEUBSI3APcMjAMLPE7EZfhNDKX7F9GFUHwyK1qRfbmg14c8bVs7Jtl6drtbJW7BHGTyXdBdySPn4fSf+DmRVhduMwdu5rZ8P2fUwYMTjvcsyOSLGd3p+S9EfAm9NF10fET7Iry6yyzC6YrtWBYeWq2CMMIuLHwI8zrMWsYs0pGCl19jFjc67G7MgcMjAk7QC6O+kqkkFOwzOpyqzCNDbU0TDY07VaeTtkYERESVz+w6zcSfJIKSt7Hulk1k/mjPN0rVbeHBhm/WR2Yz0bd+xju6drtTLlwDDrJ3M8+56VOQeGWT+Z3TgM8PzeVr4cGGb95JXpWn2EYWXKgWHWT2qqq5gxZphHSlnZcmCY9aM54+rdh2Fly4Fh1o9mN9azevNu9rd7ulYrPw4Ms340e9wwOjxdq5WpTAND0vmSVkhqkXRlN+u/KmlZentW0taCdR0F65ZkWadZf5nTmFw8wf0YVo6Kvvhgb0mqBq4F3g6sBR6RtCQinjrYJiL+uqD9XwKnFjzFnoiYl1V9ZnmYlQ6t9UgpK0dZHmHMB1oiYlVE7AduBRYcov0lvDrfhllFGlZXw6QRg/1ZDCtLWQbGZGBNweO16bLXkTQdmAn8omDxYEnNkh6UdFFPLyJpUdquua2trS/qNsvUbF9TyspUqXR6LwR+FBEdBcumR0QT8H7ga5Jmd7dhRFwfEU0R0dTY2NgftZodlYNXrfV0rVZusgyMVmBqweMp6bLuLKTL6aiIaE2/rgLu47X9G2Zla/a4enbv7+ClbXvzLsWsV7IMjEeAYyTNlDSIJBReN9pJ0nHAKOC3BctGSapL748lmRr2qa7bmpWjwtn3zMpJZoEREe3AFcBdwNPADyJiuaSrJV1Y0HQhcGu89vj8eKBZ0mPAvcCXCkdXmZWz2eM8UsrKU2bDagEi4g7gji7LPtfl8ee72e43wElZ1maWl8b6OoZ7ulYrQ6XS6W02YEhi7oQGnt2wI+9SzHrFgWGWg+MmDOeZl3Z4pJSVFQeGWQ6Om9jAjn3ttG7dk3cpZkVzYJjl4LgJyTWlnnnJp6WsfDgwzHJw7Pg0MNZvz7kSs+I5MMxy0DC4lqmjh/D0eh9hWPlwYJjlJOn49hGGlQ8HhllOjp/QwPMv72LvgY7DNzYrAQ4Ms5wcN3E4nQHPbfAH+Kw8ODDMcnJwpNTT7vi2MuHAMMvJ9DHDGFxb5aG1VjYcGGY5qa4Sx45vYMUGH2FYeXBgmOXo+AnDWb5uuy8RYmXBgWGWo5OmjGDr7gOs3eJLhFjpc2CY5ejkKSMAeKJ1W86VmB1epoEh6XxJKyS1SLqym/V/KqlN0rL09tGCdZdKei69XZplnWZ5mTuhgdpq8fhaB4aVvswmUJJUDVwLvB1YCzwiaUk3M+d9PyKu6LLtaOAqoAkIYGm67Zas6jXLQ11NNXMnNPCkjzCsDGR5hDEfaImIVRGxH7gVWFDktu8A7o6IzWlI3A2cn1GdZrk6afJIHl+71R3fVvKyDIzJwJqCx2vTZV39kaTHJf1I0tReboukRZKaJTW3tbX1Rd1m/eqkySPYvredFzfvzrsUs0PKu9P7/wEzIuJkkqOI7/b2CSLi+ohoioimxsbGPi/QLGvu+LZykWVgtAJTCx5PSZe9IiI2RcS+9OF3gNOL3dasUhw7voFB1VU84Y5vK3FZBsYjwDGSZkoaBCwElhQ2kDSx4OGFwNPp/buA8ySNkjQKOC9dZlZxBtVUcfzEBo+UspKX2SipiGiXdAXJL/pqYHFELJd0NdAcEUuAv5J0IdAObAb+NN12s6QvkIQOwNURsTmrWs3ydsrUkfxo6VraOzqpqc77TLFZ91RJIzOampqiubk57zLMeu32Za184tZl/Pdfns0bJo/IuxwbQCQtjYimYtr6TxmzEtA0YzQAzS/4QNpKlwPDrARMHjmEiSMG07zan0210uXAMCsRp08fxVIHhpUwB4ZZiWiaPoqXtu2ldauvXGulyYFhViLcj2GlzoFhViKOm9DAsEHVNL/g01JWmhwYZiWiprqKphmj+c3Kl/MuxaxbDgyzEnL2nLGsbNvF+m178y7F7HUcGGYl5M1zxgLw6xYfZVjpcWCYlZDjJjQwetggB4aVJAeGWQmpqhJvmj2GB1pe9oRKVnIcGGYl5uw5Y9m4Yx8tG3fmXYrZazgwzErM7x2bTAR274qNOVdi9loODLMSM3nkEI6fOJx7nnJgWGlxYJiVoLefMJ7m1ZvZvGt/3qWYvcKBYVaC3n78eDoDfv70hrxLMXtFpoEh6XxJKyS1SLqym/V/I+kpSY9L+rmk6QXrOiQtS29Lum5rVsneMHk4E4YP5h4HhpWQzAJDUjVwLXABcAJwiaQTujT7HdAUEScDPwK+XLBuT0TMS28XZlWnWSmSxNtPGM8vn21j5772vMsxA7I9wpgPtETEqojYD9wKLChsEBH3RsTu9OGDwJQM6zErKxfOm8TeA538bPn6vEsxA7INjMnAmoLHa9NlPfkIcGfB48GSmiU9KOminjaStCht19zW1nZ0FZuVkNOnjWLKqCHctmxd3qWYASXS6S3pA0AT8JWCxdPTicnfD3xN0uzuto2I6yOiKSKaGhsb+6Fas/5RVSUumjeZB55rY+MOX4zQ8pdlYLQCUwseT0mXvYaktwGfAS6MiH0Hl0dEa/p1FXAfcGqGtZqVpItOnURnwBIfZVgJyDIwHgGOkTRT0iBgIfCa0U6STgW+RRIWGwuWj5JUl94fC7wZeCrDWs1K0pxxDZw2bSQ3P/QinZ2+tpTlK7PAiIh24ArgLuBp4AcRsVzS1ZIOjnr6ClAP/LDL8NnjgWZJjwH3Al+KCAeGDUgfOmsGq17exQO+gq3lTJV0RcympqZobm7OuwyzPrWvvYM3ffEXnDptFN+5tCnvcqzCSFqa9hcfVkl0eptZz+pqqrlk/jR+/swGVrX5CraWHweGWRm49E0zqKup4pp7W/IuxQYwB4ZZGWhsqOMDZ0zn9mXreOHlXXmXYwOUA8OsTCx6yyxqqsRX73k271JsgHJgmJWJcQ2DWXTOLG5fto7mFzbnXY4NQA4MszLysXNnM2nEYD53+3I6/LkM62cODLMyMnRQDZ991wk89dJ2rvvlyrzLsQHGgWFWZi54wwTedfJEvnr3szy+dmve5dgA4sAwKzOS+MeLTmJsfR1/cdOjbNq57/AbmfUBB4ZZGRoxtJZvffB02nbs48+/t5S9BzryLskGAAeGWZk6ZepI/uW9p9C8egt/dmOzQ8My58AwK2PvOnkSX774ZB5oeZlLFz/M5l378y7JKpgDw6zMvbdpKl973zx+t2Yr7/73B3hsjTvCLRsODLMKsGDeZH7452fRGcF7vvFrvnjH0+za1553WVZhHBhmFeKUqSP56SfP4X1vnMq37l/FOV++l+vvX8mOvQfyLs0qhOfDMKtAj764ha/e/Sy/eu5lhtRW8wcnT+Tdp0zijJmjGVxbnXd5VkJ6Mx9GpoEh6Xzg34Bq4DsR8aUu6+uAG4HTgU3A+yLihXTdp4GPAB3AX0XEXYd7PQeG2Ws9tmYrtz6yhiXLWtm1v4MhtdWcMWs086aO5JQpIzlh0nDGNdQhKe9SLSclERiSqoFngbcDa0nm+L6kcKpVSX8BnBwRl0taCLwnIt4n6QTgFmA+MAm4Bzg2Ig45btCBYda9vQc6+O2qTdz7zEZ+u3ITLW07Ofhff0htNdNGD2XamKE0NtQxZtggRg8bxJj6OhoG1zC0tpqhg2oYMqiaoeltUE0V1VWipir5auWrN4FRk2Ed84GWiFiVFnUrsAAonJt7AfD59P6PgGuU/KmzALg1IvYBz0tqSZ/vtxnWa1axBtdW89a543jr3HEA7NzXzpOt23h2ww5Wb9rN6k27eHHTbh5dvYUtu/fTm+saSlBTJaqrRG1VFdXVoqZKVKVHLRIIcfAgRvCaIxrp1Tavtn+1jdJ/Si2WSumobPTQQfzg8rMyf50sA2MysKbg8VrgjJ7aRES7pG3AmHT5g122ndzdi0haBCwCmDZtWp8Ublbp6utqOHPWGM6cNeZ16zo6g217DrBp5z527Gtnz/4Odu/vYPf+5P6u/R20d3TS3hm0dwQdnZ0c6Aw60sftnZ0c6AggiCC5kSRQcp9Xjm6CZMHBfIqILutfXVZSSqyghsFZ/ip/Vf+8SoYi4nrgekhOSeVcjlnZq64So9PTUmaFshxW2wpMLXg8JV3WbRtJNcAIks7vYrY1M7N+lGVgPAIcI2mmpEHAQmBJlzZLgEvT+xcDv4ikF34JsFBSnaSZwDHAwxnWamZmh5HZKam0T+IK4C6SYbWLI2K5pKuB5ohYAvwH8L20U3szSaiQtvsBSQd5O/Dxw42QMjOzbPmDe2ZmA1hvhtX60iBmZlYUB4aZmRXFgWFmZkVxYJiZWVEqqtNbUhuw+gg3Hwu83Ifl9BXX1Tuuq3dcV+9UYl3TI6KxmIYVFRhHQ1JzsSMF+pPr6h3X1Tuuq3cGel0+JWVmZkVxYJiZWVEcGK+6Pu8CeuC6esd19Y7r6p0BXZf7MMzMrCg+wjAzs6I4MMzMrCgDKjAk/bGk5ZI6JTV1WfdpSS2SVkh6Rw/bz5T0UNru++ll2/u6xu9LWpbeXpAVuQeoAAAF9UlEQVS0rId2L0h6Im2X+RUXJX1eUmtBbe/sod356T5skXRlP9T1FUnPSHpc0k8kjeyhXb/sr8N9/+kl+7+frn9I0oysail4zamS7pX0VPr+/0Q3bc6VtK3g5/u5rOtKX/eQPxclvp7ur8clndYPNc0t2A/LJG2X9Mkubfplf0laLGmjpCcLlo2WdLek59Kvo3rY9tK0zXOSLu2uTa9FxIC5AccDc4H7gKaC5ScAjwF1wExgJVDdzfY/ABam968DPpZxvf8CfK6HdS8AY/tx330e+LvDtKlO990sYFC6T0/IuK7zgJr0/j8D/5zX/irm+wf+Arguvb8Q+H4//OwmAqel9xuAZ7up61zgv/vr/VTszwV4J3AnyZTeZwIP9XN91cB6kg+39fv+As4BTgOeLFj2ZeDK9P6V3b3ngdHAqvTrqPT+qKOtZ0AdYUTE0xGxoptVC4BbI2JfRDwPtADzCxsomfH9fwE/Shd9F7goq1rT13svcEtWr5GB+UBLRKyKiP3ArST7NjMR8bOIaE8fPkgyO2Neivn+F5C8dyB5L/1++rPOTES8FBGPpvd3AE8Dk7N8zT60ALgxEg8CIyVN7MfX/31gZUQc6RUkjkpE3E8yV1ChwvdQT7+H3gHcHRGbI2ILcDdw/tHWM6AC4xAmA2sKHq/l9f+hxgBbC345ddemL/0esCEinuthfQA/k7RU0qIM6yh0RXpaYHEPh8HF7McsXUby12h3+mN/FfP9v9ImfS9tI3lv9Yv0FNipwEPdrD5L0mOS7pR0Yj+VdLifS97vqYX0/EdbHvsLYHxEvJTeXw+M76ZNJvstsxn38iLpHmBCN6s+ExG393c93Smyxks49NHF2RHRKmkccLekZ9K/RjKpC/gm8AWS/+BfIDlddtnRvF5f1HVwf0n6DMnsjDf18DR9vr/KjaR64MfAJyNie5fVj5KcdtmZ9k/dRjI1ctZK9ueS9lFeCHy6m9V57a/XiIiQ1G+fjai4wIiItx3BZq3A1ILHU9JlhTaRHA7XpH8ZdtemT2qUVAP8IXD6IZ6jNf26UdJPSE6HHNV/tGL3naRvA//dzapi9mOf1yXpT4F3Ab8f6Qncbp6jz/dXN4r5/g+2WZv+nEeQvLcyJamWJCxuioj/6rq+MEAi4g5J35A0NiIyvdBeET+XTN5TRboAeDQiNnRdkdf+Sm2QNDEiXkpPz23spk0rST/LQVNI+m6Pik9JJZYAC9MRLDNJ/lJ4uLBB+ovoXuDidNGlQFZHLG8DnomItd2tlDRMUsPB+yQdv09217avdDlv/J4eXu8R4Bglo8kGkRzOL8m4rvOBvwcujIjdPbTpr/1VzPe/hOS9A8l76Rc9hVxfSftI/gN4OiL+tYc2Ew72pUiaT/K7IdMgK/LnsgT4UDpa6kxgW8HpmKz1eJSfx/4qUPge6un30F3AeZJGpaePz0uXHZ2se/lL6Ubyi24tsA/YANxVsO4zJCNcVgAXFCy/A5iU3p9FEiQtwA+BuozqvAG4vMuyScAdBXU8lt6Wk5yayXrffQ94Ang8fcNO7FpX+vidJKNwVvZTXS0k52qXpbfrutbVn/uru+8fuJok0AAGp++dlvS9NKsf9tHZJKcSHy/YT+8ELj/4PgOuSPfNYySDB97UD3V1+3PpUpeAa9P9+QQFoxszrm0YSQCMKFjW7/uLJLBeAg6kv7s+QtLn9XPgOeAeYHTatgn4TsG2l6Xvsxbgw31Rjy8NYmZmRfEpKTMzK4oDw8zMiuLAMDOzojgwzMysKA4MMzMrSsV9cM+sVEjqIBkKWkvyKfQbga9GRGeuhZkdIQeGWXb2RMQ8gPTSFzcDw4Grcq3K7Aj5cxhmGZG0MyLqCx7PIvk0+NjwfzwrQ+7DMOsnEbGKZH6FcXnXYnYkHBhmZlYUB4ZZP0lPSXXQ/dVFzUqeA8OsH0hqJJnW9xr3X1i5cqe3WUa6GVb7PeBfPazWypUDw8zMiuJTUmZmVhQHhpmZFcWBYWZmRXFgmJlZURwYZmZWFAeGmZkVxYFhZmZF+f8i1gUTi1uqSQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import torch\n",
    "\n",
    "x = torch.from_numpy(np.arange(-10,10,.001))\n",
    "M = 0.5\n",
    "y = -torch.tanh(x)+1\n",
    "#y = .where(y>0,y,0)\n",
    "x = x.numpy()\n",
    "y = y.numpy()\n",
    "plt.plot(x,y)\n",
    "plt.title(\"Tanh version\")\n",
    "plt.xlabel(\"D\")\n",
    "plt.ylabel(\"loss\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import torch\n",
    "\n",
    "x = torch.from_numpy(np.arange(-10,10,.001))\n",
    "M = 0.5\n",
    "y = -torch.sigmoid(x-1)+1\n",
    "#y = .where(y>0,y,0)\n",
    "x = x.numpy()\n",
    "y = y.numpy()\n",
    "plt.plot(x,y)\n",
    "plt.title(\"Sigmoid version\")\n",
    "plt.xlabel(\"D\")\n",
    "plt.ylabel(\"loss\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### We could also consider not squared L2 norm for the backgroud non-matches:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "x = np.arange(0,2,.001)\n",
    "M_masked = 0.5\n",
    "y = M_masked - x\n",
    "y = np.where(y>0,y,0)\n",
    "y = y**2\n",
    "plt.plot(x,y,label=\"masked non match\")\n",
    "x = np.arange(0,2,.001)\n",
    "M_background = 2.0\n",
    "y = (M_background - x)\n",
    "y = np.where(y>0,y,0)\n",
    "y = y**2\n",
    "plt.plot(x,y,label=\"background non match\")\n",
    "plt.title(\"Non-match Loss - VARIATION 1\")\n",
    "plt.xlabel(\"D\")\n",
    "plt.ylabel(\"loss\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEWCAYAAACXGLsWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzs3Xd8VGXWwPHfSaeE0GtCDyUk1IAUlS7YQBSlSrH3utbVteyuq6+67uqiiIqIAgooioKiKAgoJaFKrwFCDS3UkHbeP+6AISRkCDOZlPP9fEZm7n3m3nOTOGeecp9HVBVjjDHmQvx8HYAxxpjCz5KFMcaYPFmyMMYYkydLFsYYY/JkycIYY0yeLFkYY4zJkyULU6yJSBcRSfR1HMYUdZYsSigRSRCR/SJSJsu2O0Rkrg/DcouIvCgin3np2HNF5A5vHPtSiMh6Ebkth+0Pi0h8tm3jRCRdRGpk2/6iiKSJyHEROSIiv4tIhyz7c0ysOR1PREa7jnNcRFKzHPe4iHwvInVFREUkIMt7OorILyJyTESSReRbEYnKdn4VkXeznX+BiIzI5ecyXESWishREUkUkf/Lek7jOZYsSjZ/4GFfB2Hc8gkwLIftt7r2AeBK/jcBycDQHMp/oaplgcrAHGDKhU6a2/FU9R5VLes61itnjut6XJ3DcToAPwLfADWBesBK4DcRqZ+l6AngVhGpe6G4sigNPOK6nsuA7sBf3HyvuQiWLEq214G/iEj5nHa6vgnGub4FxolIxyz75orI30XkN9c3xR9FpHJuJ3KV/4fr2+xx17fKSiIywfWtMC7rB4SI/FdEdrr2LRWRK1zbewPPAgNcx1np2l5RRD4Wkd0iclhEvs52/sddNak9IjIyPz8sEekjImtc38rnikjTLPueEpFdrp/FBhHp7treTkTiXdexT0T+nZ9zA58Cl4tInSznjAKaA5OylLsJOAK8DAzP7WCqmg5MAGqJSJULnNet47nh/4DxqvpfVT2mqodU9TlgEfBilnJHgHHAC+4cVFXfU9X5qpqqqrtwrqnTJcRpcmHJomSLB+aSwzcxEakIzADeBioB/wZmiEilLMUGAyOBqkBQTsfJZiDON+FaQANgIfAxUBFYx7kfEHFAS9e+icAUEQlR1R8495tsC1f5T3G+ZTZzxfNWlmNVB8Jc570dGCUiFfKI9Rwi0gjnQ/kRoAowE/hWRIJEpDHwANBWVUOBXkCC663/Bf6rquVc1zz5Ys57hqom4tQEbs2y+VZgpqoeyLJtuCvOz4EmItIml+sJwqmpHAQOX+DUbh3vQkSkNNCRnGsxk4Ge2bb9E7jJ9XO9WFcCa/LxPpMHSxbmb8CDOXy7vBbYpKqfqmq6qk4C1gPXZynzsapuVNVTOP/Tt8zjXB+r6hZVTQa+B7ao6mzXt9wpQKszBVX1M1U96Dr3m0AwkOOHh6st/WrgHlU9rKppqvprliJpwMuu7TOB47kd6wIGADNU9SdVTQPeAErhfAhmuOKLEpFAVU1Q1S1Zzt1QRCqr6nFVXXSR583qE1zJQkT8gCGc2wRVG+gKTFTVfcDPnN90dYuIHAFOAXcC/V0///O4eTx3VMT5rNmTw749OE1IZ6nqXmA0Tm3Gba4+nVic343xMEsWJZyqrga+A57OtqsmsD3btu04387P2Jvl+UmgLJzX+flsljL7sjw/lcPrsmdeiMhfRGSdqwnsCE7NILdmrgjgkKrm9g35YLYPxLOxXoRzfh6qmgnsBGqp6macGseLwH4R+VxEarqK3g40Ata7mtquy+ngrk7hMz+zIbnE8BVQQ0TaA11walIzsuy/FVinqitcrycAg0UkMEuZyapaHqgGrAYuVFNw53juOAxkAjVy2FcDOJDD9teAXiLSIod95xGRG4B/AVdnq2kZD7FRAwac5p9lwJtZtu0G6mQrVxv4Ia+Dqeo9wD35DcbVP/EkTmflGlXNFJHDgJw5Rba37AQqikh5VT2S3/PmYTcQkyVGwUlSuwBUdSIwUUTKAe/jfNjdqqqbgEGumsCNwFQRqaSqJ7IePKdO4exU9aSITMX5dl8K+FxVU7MUGQbUFpEzSTwApwnxGpyO5azHOiAidwHxIjJRVXP61u/28fKI+4SILARuxmlKy+oWnBpL9vccFJH/AH/P6/iufqwPgGtV9Q934zIXx2oWBtc34y+Ah7Jsngk0EpHBIhIgIgOAKJxaiLeFAulAEhAgIn8DymXZvw+o6/oAxvVB9z3wrohUEJFAEbnyEs4fICIhWR6BOM1s14pId9frx4HTwO8i0lhEuolIMJCCU0vKBBCRoSJSxVUTOZPIMi8htk9wmsRu4twmqA44fSLtcJoDWwLROP09OTYdqeoGYBZOYj5Hfo6Xh6eB4SLykIiEun5P/wA6AC/l8p5/4zTzNc1lPyLSDafGc5OqLslHXMZNlizMGS8DZ++5UNWDwHU4H4oHcT5QriugKv4snBrMRpymnxSc2sMZZzpKD4rIMtfzW3H6B9YD+3GahfLrPZwP/DOPj10frEOBd3CaTa4Hrnd9sw8GXnVt34vTwf6M61i9gTUichyns3ugq48nv+bhDGNNVNW4LNuHA9+o6h+quvfMw3XO61wDFnLyOnCXiFTNtj2/x8uRqi7A6fi/EaefYjtOH9XlrtpXTu85ijOK6kLneh6niXJmlma87y8mNuMescWPjDHG5MVqFsYYY/JkycIYY0yeLFkYY4zJkyULY4wxeSo291lUrlxZ69at6+swjDGmSFm6dOkBVb3Q/GBAMUoWdevWJT4+Pu+CxhhjzhKR7DM15MiaoYwxxuTJkoUxxpg8WbIwxhiTp2LTZ2FMcZGWlkZiYiIpKSm+DsUUIyEhIYSHhxMYeLGTBjssWRhTyCQmJhIaGkrdunVxJrc15tKoKgcPHiQxMZF69erl6xhebYYSkd6uJSY3i0j29RIQkcdEZK2IrBKRn7MtGZkhIitcj+nejNOYwiQlJYVKlSpZojAeIyJUqlTpkmqrXqtZiIg/MApnycREIE5Epqvq2izFlgOxrnn678WZYXKAa98pVc1r5TVjiiVLFMbTLvVvyps1i3bAZlXd6prG+XOgb9YCqjpHVU+6Xi4Cwr0YT46OHDtO3AcPsmXTuoI+tTHGFBneTBa1OHcNgkTOXZIzu9txFrA5I0RE4kVkkWvJxPOIyF2uMvFJSUn5CtLv2B6aJE4hZNoISLMORWM8LSEhgejo6Hy/f8SIEUydOtWDEXnPkSNHePfdd/Ms16VLlyJ3E3GhGDorIkNxFlp/PcvmOqoaCwwG/iMiDbK/T1XHqGqsqsZWqZLn3eo5Klczks9r/ZVaJ9eTPuOJfB3DGGPA/WRRFHkzWezCWaP4jHDXtnOISA/gr0AfVT19ZruqnlnbeCswF2dVLa9o1n0Q/0vvS8CK8bBsvLdOY0yhl5CQQJMmTRgxYgSNGjViyJAhzJ49m06dOhEZGcmSJc7KpUuWLKFDhw60atWKjh07smHDBgDWrFlDu3btaNmyJc2bN2fTpnMXwdu6dSutWrUiLi6OjIwMnnjiCdq2bUvz5s15//33AWfkzgMPPEDjxo3p0aMH+/fvzzHWLl268NRTT9GuXTsaNWrE/PnzAWeAwMiRI4mJiaFVq1bMmeMs+z1u3DhuvPFGevfuTWRkJE8+ed5qsoAzddAzzzxDy5YtiY2NZdmyZfTq1YsGDRowevRoAI4fP0737t1p3bo1MTExfPONsyT5008/zZYtW2jZsiVPPOF8+XzttdeIiYmhRYsWPP30n+N8pkyZcl7shZk3h87GAZEiUg8nSQzEqSWcJSKtcBa3762q+7NsrwCcVNXTIlIZ6ITT+e0VHepX4rlyw7gifSctZvwFqsdATa/lJmPc9tK3a1i7+6hHjxlVsxwvXN8s1/2bN29mypQpjB07lrZt2zJx4kQWLFjA9OnTeeWVV/j6669p0qQJ8+fPJyAggNmzZ/Pss8/y5ZdfMnr0aB5++GGGDBlCamoqGRkZ7Nu3D4ANGzYwcOBAxo0bR4sWLRgzZgxhYWHExcVx+vRpOnXqxFVXXcXy5cvZsGEDa9euZd++fURFRXHbbbflGGt6ejpLlixh5syZvPTSS8yePZtRo0YhIvzxxx+sX7+eq666io0bNwKwYsUKli9fTnBwMI0bN+bBBx8kIiLivOPWrl2bFStW8OijjzJixAh+++03UlJSiI6O5p577iEkJIRp06ZRrlw5Dhw4QPv27enTpw+vvvoqq1evZsWKFQB8//33fPPNNyxevJjSpUtz6NChC8ZemHktWahquog8gLOesj8wVlXXiMjLQLyqTsdpdioLTHH11O9Q1T44C7S/LyKZOLWfV7ONovIoEaF/u7qM+OEullT+O4FfDIO7f4XSF7XMsDHFQr169YiJiQGgWbNmdO/eHREhJiaGhIQEAJKTkxk+fDibNm1CREhLSwOgQ4cO/POf/yQxMZEbb7yRyMhIAJKSkujbty9fffUVUVFRAPz444+sWrXqbH9EcnIymzZtYt68eQwaNAh/f39q1qxJt27dco31xhtvBKBNmzZnY1uwYAEPPvggAE2aNKFOnTpnk0X37t0JCwsDICoqiu3bt+eYLPr06QNATEwMx48fJzQ0lNDQUIKDgzly5AhlypTh2WefZd68efj5+bFr166zSTGr2bNnM3LkSEqXLg1AxYp/fqbkFHth5tWb8lR1JjAz27a/ZXneI5f3/Q7EeDO27Pq3CeffP27ks9r/YOSGu+HL22HIVPDzL8gwjDnHhWoA3hIcHHz2uZ+f39nXfn5+pKenA/D888/TtWtXpk2bRkJCAl26dAFg8ODBXHbZZcyYMYNrrrmG999/n/r16xMWFkbt2rVZsGDB2WShqrzzzjv06tXrnPPPnHnOR4Zbsfr7+5+Nzd1ru9B7sl5z9p9Heno6EyZMICkpiaVLlxIYGEjdunUv+h6Gi43d1wpFB3dhUDU0hO5Nq/K/DaGk934dtvwCc//l67CMKZSSk5OpVcsZ3Dhu3Liz27du3Ur9+vV56KGH6Nu3L6tWrQIgKCiIadOmMX78eCZOnAhAr169eO+9987WSjZu3MiJEye48sor+eKLL8jIyGDPnj1n+xzcdcUVVzBhwoSzx9yxYweNGze+1Es+R3JyMlWrViUwMJA5c+awfbszy3doaCjHjh07W65nz558/PHHnDzp3CGQtRmqqLFkkcXAtrU5eCKVn0J6QatbYd7rsOH7vN9oTAnz5JNP8swzz9CqVatzvhVPnjyZ6OhoWrZsyerVqxk2bNjZfWXKlOG7777jrbfeYvr06dxxxx1ERUXRunVroqOjufvuu0lPT6dfv35ERkYSFRXFsGHD6NChw0XFdt9995GZmUlMTAwDBgxg3Lhx59QOPGHIkCHEx8cTExPD+PHjadKkCQCVKlWiU6dOREdH88QTT9C7d2/69OlDbGwsLVu25I033vBoHAVJVNXXMXhEbGysXuq45YxM5YrXfqFhtVDG39ocxvaCQ9vgrjlQ6byRu8Z4xbp162jatKmvwzDFUE5/WyKy1HWbwgVZzSILfz/h5tgI5m9KYuexTBjwKfj5wRe3QuoJX4dnjDE+Y8kim5tjnRlHpixNhPK14aaPYP9a+PZhKCa1MGOMuViWLLIJr1CaKyOrMCV+JxmZCg27Q7e/wh9TYPH7vg7PGGN8wpJFDga1i2BPcgq/bnTdJ3j549D4Wpj1LGwr/HdaGmOMp1myyEG3JtWoXDaIz5e45kH084N+o6FSQ5gyHI7s8G2AxhhTwCxZ5CAowI+b2oTz8/r97D/qutEmpBwMnAgZ6fD5YEg9eeGDGGNMMWLJIhcD29YmI1Odju4zKjeE/h/B3tUw/QHr8DbFzqVOJ37G3Llzue666zwQkefZlOf5Y8kiF/Uql6FD/UpMXLzD6eg+I7IndP8brP4Sfvuv7wI0pphSVTIzM30dRqFQmKY8t2RxAUPb12HXkVN/dnSfcfmj0KwfzH4RNhXumSKNuVjp6ekMGTKEpk2b0r9//7NTVbz88su0bduW6Oho7rrrLs7c0Lt582Z69OhBixYtaN26NVu2bDnneHFxcbRq1YotW7aQlJREz549adasGXfccQd16tThwIEDJCQk0LhxY4YNG0Z0dDQ7d+5k0qRJxMTEEB0dzVNPPXX2eGXLlj37fOrUqYwYMQJwagwPPfQQHTt2pH79+mdrDzbluYeoarF4tGnTRj0tNT1DY//xk9728ZLzd54+rvpuJ9V/Rage2Ozxc5uSa+3atX++mPmU6thrPPuY+VSu5962bZsCumDBAlVVHTlypL7++uuqqnrw4MGz5YYOHarTp09XVdV27drpV199paqqp06d0hMnTuicOXP02muv1d9++01bt26t27dvV1XV+++/X1955RVVVf3+++8V0KSkJN22bZuKiC5cuFBVVXft2qURERG6f/9+TUtL065du+q0adNUVbVMmTJn45gyZYoOHz5cVVWHDx+u/fv314yMDF2zZo02aNBAVVW//PJL7dGjh6anp+uuXbs0LCxMp0yZct61d+7cWR977DFVVZ0xY4Z2795dVVXfeOMNHTlypKqqrlu3TiMiIvTUqVP68ccfa7169fTIkSN66tQprV27tu7YseO849apU0ffffddVVV95JFHNCYmRo8ePar79+/XqlWrqqpqWlqaJicnq6pqUlKSNmjQQDMzM3Xbtm3arFmzP/8cZs7UDh066IkTJ875neQWe3bn/G254MwCnudnrNUsLiDQ34+BbSP4ZcN+Eg9n69AOKgMDJ4D4Ox3ep4/lfBBjipiIiAg6deoEwNChQ1mwYAEAc+bM4bLLLiMmJoZffvmFNWvWcOzYMXbt2kW/fv0ACAkJOTsd97p167jrrrv49ttvqV27NuBMHz5w4EAAevfuTYUKFc6et06dOrRv3x5waiNdunShSpUqBAQEMGTIEObNm5dn7DfccAN+fn5ERUWdnTLcE1OeDx06FMh9yvOQkJCzU57nJOuU55dddhmhoaFUqVLl7JTnqsqzzz5L8+bN6dGjR6Gc8tyrU5QXB4Pa1WbUnM1MWrKDJ3o1OXdnhTpw8zj4tB9MuwducU0PYoynXP1qgZ/StbbMOa9TUlK47777iI+PJyIighdffDHPKblr1KhBSkoKy5cvp2bNmnmet0yZ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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "x = np.arange(0,1,.001)\n",
    "M_masked = 0.5\n",
    "y = M_masked - x\n",
    "y = np.where(y>0,y,0)\n",
    "y = y**2\n",
    "plt.plot(x,y,label=\"masked non match\")\n",
    "x = np.arange(0,1,.001)\n",
    "M_background = 1.0\n",
    "y = (M_background - x)*(M_masked/M_background)\n",
    "y = np.where(y>0,y,0)\n",
    "y = y**2\n",
    "plt.plot(x,y,label=\"background non match\")\n",
    "plt.title(\"Non-match Loss - VARIATION 2\")\n",
    "plt.xlabel(\"D\")\n",
    "plt.ylabel(\"loss\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEWCAYAAACJ0YulAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xd4FWXax/HvnU4ghJbQey+hho4KgoKooKJ0KYrYdV3XusXyrquuZVd3VURXUASkKIgUYVFYBEEIgkBAektoIUCAQEi73z/mEAMESCAnk5Pcn+vKlZw5c2buCeH8zjzPzPOIqmKMMcYA+LldgDHGmMLDQsEYY0wWCwVjjDFZLBSMMcZksVAwxhiTxULBGGNMFgsF4/NEpKuIxLldhzFFgYVCESYiu0TkkIiUzLZslIgsdrGsXBGRF0Xkcy9te7GIjPLGtq+GiPwqIvfksPxxEYk5b9l4EUkXkcrnLX9RRNJE5KSIHBORH0WkY7bncwzQnLYnImM82zkpIqnZtntSROaJSC0RUREJyPaaTiLyvYicEJEkEflGRJqct38VkffP2/9SERlxkd/LcBFZLSLHRSRORP6efZ8mf1koFH3+wONuF2Fy5VNgWA7L7/Y8B4An5PsBScDQHNafoqqlgArAImDapXZ6se2p6gOqWsqzrb+d3a7n66YcttMRWAB8DVQBagO/AMtEpE62VZOBu0Wk1qXqyiYU+J3neNoD3YE/5PK1Jo8sFIq+N4A/iEiZnJ70fLJb5flUt0pEOmV7brGI/J+ILPN88lsgIhUutiPP+n/1fDo96fmUWF5EJno+5a3K/kYgIu+IyF7Pc6tF5BrP8l7A88AAz3Z+8SwvJyLjRGSfiBwVkZnn7f9Jz5nRfhEZeSW/LBHpIyKxnk/Zi0WkcbbnnhGReM/vYrOIdPcsbyciMZ7jOCgib1/JvoEJQBcRqZltn02A5sDkbOv1A44BLwPDL7YxVU0HJgJVRSTiEvvN1fZy4e/AZ6r6jqqeUNUjqvonYAXwYrb1jgHjgRdys1FV/UBVf1DVVFWNxzmmzldRp7kEC4WiLwZYTA6frESkHDAHeBcoD7wNzBGR8tlWGwyMBCKBoJy2c56BOJ9sqwJ1geXAOKAcsIlz3whWAS09z00CpolIiKp+y7mfTFt41p+A86mxqaeef2TbViUg3LPfe4H3RKTsZWo9h4g0wHnz/R0QAcwFvhGRIBFpCDwCtFXVMKAnsMvz0neAd1S1tOeYp+Zlv2epahzOJ/u7sy2+G5irqoezLRvuqfMLoJGItLnI8QThnHkkAkcvsetcbe9SRCQU6ETOZyVTgRvOW/YK0M/ze82ra4HYK3idyQULheLhL8CjOXxavBnYqqoTVDVdVScDvwK3ZltnnKpuUdXTOP+5W15mX+NUdbuqJgHzgO2qutDzqXUa0Orsiqr6uaomevb9FhAM5Pgm4Wnrvgl4QFWPqmqaqv4v2yppwMue5XOBkxfb1iUMAOao6n9VNQ14EyiB82aX4amviYgEquouVd2ebd/1RKSCqp5U1RV53G92n+IJBRHxA4ZwbtNRDaAbMElVDwLfcWGTU38ROQacBu4D7vT8/i+Qy+3lRjmc95P9OTy3H6fpJ4uqHgDG4Jyd5JqnzyUa59/GeIGFQjGgqhuA2cCz5z1VBdh93rLdOJ+2zzqQ7edTQCm4oBPy+WzrHMz28+kcHpc6+0BE/iAimzxNV8dwPulfrHmqOnBEVS/2iTfxvDe+rFrz4Jzfh6pmAnuBqqq6DecM4kXgkIh8ISJVPKveCzQAfvU0kd2S08Y9nbNnf2dDLlLDV0BlEekAdMU5M5qT7fm7gU2qutbzeCIwWEQCs60zVVXLABWBDcClPvnnZnu5cRTIBCrn8Fxl4HAOy18HeopIixyeu4CI3Aa8Ctx03pmTyUfWg198vAD8DLyVbdk+oOZ569UAvr3cxlT1AeCBKy3G03/wNE6nYayqZorIUUDO7uK8l+wFyolIGVU9dqX7vYx9QFS2GgUnjOIBVHUSMElESgMf4ryp3a2qW4FBnk/2dwDTRaS8qiZn33hOnbPnU9VTIjId59N6CeALVU3NtsowoIaInA3rAJymv944HbzZt3VYREYDMSIySVVz+hSf6+1dpu5kEVkO3IXTBJZdf5wzkPNfkygi/wT+73Lb9/QzfQTcrKrrc1uXyTs7UygmPJ90pwCPZVs8F2ggIoNFJEBEBgBNcM4qvC0MSAcSgAAR+QtQOtvzB4FanjdaPG9o84D3RaSsiASKyLVXsf8AEQnJ9hWI0zx2s4h09zx+EjgD/CgiDUXkehEJBlJwznoyAURkqIhEeM4szgZW5lXU9ilOU1Y/zm066ojTZ9EOpxmvJdAMpz8mxyYfVd0MzMcJ4HNcyfYu41lguIg8JiJhnn+nvwIdgZcu8pq3cZrnGl/keUTkepwzmH6quvIK6jJ5YKFQvLwMZN2zoKqJwC04b36JOG8ctxTQqfl8nDOSLThNNik4ZwNnne2wTBSRnz0/343Tfv8rcAinOedKfYDzxn72a5znDXQo8C+c5o5bgVs9n9SDgdc8yw/gdHQ/59lWLyBWRE7idDoP9PTBXKklOJeHxqnqqmzLhwNfq+p6VT1w9suzz1s8Fw7k5A1gtIhEnrf8SreXI1VditMBfwdOP8JunD6kLp6zqZxecxznqqVL7evPOE2Lc7M1v83LS20m98Qm2THGGHOWnSkYY4zJYqFgjDEmi4WCMcaYLBYKxhhjsvjcfQoVKlTQWrVquV2GMcb4lNWrVx9W1UuNgQX4YCjUqlWLmJiYy69ojDEmi4icP3pBjqz5yBhjTBYLBWOMMVksFIwxxmTxuT4FY4qCtLQ04uLiSElJcbsUU8SEhIRQrVo1AgPzOtCtw0LBGBfExcURFhZGrVq1cAZjNebqqSqJiYnExcVRu3btK9qG15qPROQTz9SIGy7yvIjIuyKyTUTWiUhrb9ViTGGTkpJC+fLlLRBMvhIRypcvf1VnoN7sUxiPM3rkxdwE1Pd8jcYZtdKYYsMCwXjD1f5deS0UVHUJcOQSq/TFmeRbPdMXlvFMuegdh7fBwhfBRoU1xpiLcvPqo6qcO35+HOdOA5lFREaLSIyIxCQkJFzZ3rZ8C0v/Acvfu7LXG2MuadeuXTRr1uyKXz9ixAimT5+ejxV5z7Fjx3j//fcvu17Xrl197mZbn7gkVVXHqmq0qkZHRFz2Lu2cdXwYGt8K//0L7FqavwUaY4qV3IaCL3IzFOJx5r89q5pnmXeIQN/3oVwdmDYCju/z2q6MKex27dpFo0aNGDFiBA0aNGDIkCEsXLiQzp07U79+fVaudGa9XLlyJR07dqRVq1Z06tSJzZs3AxAbG0u7du1o2bIlzZs3Z+vWcydW27FjB61atWLVqlVkZGTw1FNP0bZtW5o3b86HH34IOFfKPPLIIzRs2JAePXpw6NChHGvt2rUrzzzzDO3ataNBgwb88MMPgNNZP3LkSKKiomjVqhWLFjlTQ48fP5477riDXr16Ub9+fZ5++oKZSAFnyJznnnuOli1bEh0dzc8//0zPnj2pW7cuY8aMAeDkyZN0796d1q1bExUVxddfO9NWP/vss2zfvp2WLVvy1FNPAfD6668TFRVFixYtePbZZ7P2M23atAtqL8zcvCR1FvCIiHwBtAeSLjKxeP4JKQ0DPoePrneCYfhsCAjy6i6NuZyXvoll477j+brNJlVK88KtTS+5zrZt25g2bRqffPIJbdu2ZdKkSSxdupRZs2bxt7/9jZkzZ9KoUSN++OEHAgICWLhwIc8//zxffvklY8aM4fHHH2fIkCGkpqaSkZHBwYMHAdi8eTMDBw5k/PjxtGjRgrFjxxIeHs6qVas4c+YMnTt35sYbb2TNmjVs3ryZjRs3cvDgQZo0acI999yTY63p6emsXLmSuXPn8tJLL7Fw4ULee+89RIT169fz66+/cuONN7JlyxYA1q5dy5o1awgODqZhw4Y8+uijVK9e/YLt1qhRg7Vr1/LEE08wYsQIli1bRkpKCs2aNeOBBx4gJCSEGTNmULp0aQ4fPkyHDh3o06cPr732Ghs2bGDt2rUAzJs3j6+//pqffvqJ0NBQjhw5csnaCzOvhYKITAa6AhVEJA54AQgEUNUxOJPG9wa2AaeAkd6q5RyRjeC295xQWPBH6P1GgezWmMKmdu3aREVFAdC0aVO6d++OiBAVFcWuXbsASEpKYvjw4WzduhURIS0tDYCOHTvyyiuvEBcXxx133EH9+vUBSEhIoG/fvnz11Vc0adIEgAULFrBu3bqs/oKkpCS2bt3KkiVLGDRoEP7+/lSpUoXrr7/+orXecccdALRp0yartqVLl/Loo48C0KhRI2rWrJkVCt27dyc8PByAJk2asHv37hxDoU+fPgBERUVx8uRJwsLCCAsLIzg4mGPHjlGyZEmef/55lixZgp+fH/Hx8Vnhl93ChQsZOXIkoaGhAJQr99uU0znVXph5LRRUddBlnlfgYW/t/5Ka3g5xMbD831A1GloMcKUMY4DLfqL3luDg4Kyf/fz8sh77+fmRnp4OwJ///Ge6devGjBkz2LVrF127dgVg8ODBtG/fnjlz5tC7d28+/PBD6tSpQ3h4ODVq1GDp0qVZoaCq/Otf/6Jnz57n7H/u3Ll5rtXf3z+rttwe26Vek/2Yz/99pKenM3HiRBISEli9ejWBgYHUqlUrz/cA5LV2t/lER7NX9HgJanaBbx6HAzneX2dMsZeUlETVqs5FgePHj89avmPHDurUqcNjjz1G3759WbduHQBBQUHMmDGDzz77jEmTJgHQs2dPPvjgg6yzjC1btpCcnMy1117LlClTyMjIYP/+/Vl9Arl1zTXXMHHixKxt7tmzh4YNG17tIZ8jKSmJyMhIAgMDWbRoEbt3O6NPh4WFceLEiaz1brjhBsaNG8epU6cAzmk+8jXFNxT8A+CucVCiDEwZCqePuV2RMYXO008/zXPPPUerVq3O+ZQ7depUmjVrRsuWLdmwYQPDhg3Leq5kyZLMnj2bf/zjH8yaNYtRo0bRpEkTWrduTbNmzbj//vtJT0/n9ttvp379+jRp0oRhw4bRsWPHPNX20EMPkZmZSVRUFAMGDGD8+PHnfNrPD0OGDCEmJoaoqCg+++wzGjVqBED58uXp3LkzzZo146mnnqJXr1706dOH6OhoWrZsyZtvvpmvdRQkUR+7mSs6Olrz9brfvSthXG+o1x0GTga/4puTpuBs2rSJxo0bu12GKaJy+vsSkdWqGn2519o7YPV20OtV5+a2H95yuxpjjHGVhQJA21HQfAAsegW2Fe7LxYwxxpssFMC5se2Wf0LFpvDlKDi6y+2KjDHGFRYKZwWFwoAJoJnwxRBITXa7ImOMKXAWCtmVqwN3fgKHNsLMh2xEVWNMsWOhcL56PaDHi7BxJix92+1qjDGmQFko5KTTY9DsTvju/2DLArerMSbfXe0w12ctXryYW265JR8qyn82FPeVsVDIiQj0+RdUinI6ng9vc7siY4ocVSUzM9PtMgqFwjQUt4XCxQSFwsCJzp3PXwyClPwdxdIYt6WnpzNkyBAaN27MnXfemTVEw8svv0zbtm1p1qwZo0eP5uwNrtu2baNHjx60aNGC1q1bs3379nO2t2rVKlq1asX27dtJSEjghhtuoGnTpowaNYqaNWty+PBhdu3aRcOGDRk2bBjNmjVj7969TJ48maioKJo1a8YzzzyTtb1SpUpl/Tx9+nRGjBgBOGcAjz32GJ06daJOnTpZZwM2FHc+UVWf+mrTpo0WqB1LVF8sqzpxgGpGRsHu2xRZGzdu/O3B3GdUP+mdv19zn7nk/nfu3KmALl26VFVVR44cqW+88YaqqiYmJmatN3ToUJ01a5aqqrZr106/+uorVVU9ffq0Jicn66JFi/Tmm2/WZcuWaevWrXX37t2qqvrwww/r3/72N1VVnTdvngKakJCgO3fuVBHR5cuXq6pqfHy8Vq9eXQ8dOqRpaWnarVs3nTFjhqqqlixZMquOadOm6fDhw1VVdfjw4XrnnXdqRkaGxsbGat26dVVV9csvv9QePXpoenq6xsfHa3h4uE6bNu2CY7/uuuv097//vaqqzpkzR7t3766qqm+++aaOHDlSVVU3bdqk1atX19OnT+u4ceO0du3aeuzYMT19+rTWqFFD9+zZc8F2a9asqe+//76qqv7ud7/TqKgoPX78uB46dEgjIyNVVTUtLU2TkpJUVTUhIUHr1q2rmZmZunPnTm3atOlvfxJz52rHjh01OTn5nH+Ti9V+vnP+vjyAGM3Fe6ydKVxO7Wug12uwZR4sftXtaozJN9WrV6dz584ADB06lKVLnRkJFy1aRPv27YmKiuL7778nNjaWEydOEB8fz+233w5ASEhI1jDRmzZtYvTo0XzzzTfUqFEDcIa1HjhwIAC9evWibNmyWfutWbMmHTp0AJyzi65duxIREUFAQABDhgxhyZIll639tttuw8/PjyZNmmQNZZ0fQ3EPHToUuPhQ3CEhIVlDceck+1Dc7du3JywsjIiIiKyhuFWV559/nubNm9OjR49CORS3m5Ps+I5298GBX2DJ351+hiZ93K7IFCU3vebKbkXkgscpKSk89NBDxMTEUL16dV588cXLDhVduXJlUlJSWLNmDVWqVLnsfkuWLJnn+s6vIfvAd3oFl47bUNwXZ2cKuSECN7/tzL0w4wE4uNHtioy5anv27GH58uUATJo0iS5dumS9QVWoUIGTJ09mtdeHhYVRrVo1Zs6cCcCZM2ey+iDKlCnDnDlzeO6551i8eDEAnTt3ZurUqYAzyc7Ro0dzrKFdu3b873//4/Dhw2RkZDB58mSuu+46ACpWrMimTZvIzMxkxowZlz0eG4o7f1go5FZAsDOVZ3App+P5lO+Ol24MQMOGDXnvvfdo3LgxR48e5cEHH6RMmTLcd999NGvWjJ49e9K2bdus9SdMmMC7775L8+bN6dSpEwcOHMh6rmLFisyePZuHH36Yn376iRdeeIEFCxbQrFkzpk2bRqVKlQgLC7ughsqVK/Paa6/RrVs3WrRoQZs2bejbty8Ar732GrfccgudOnWicuXKlz0eG4o7f9jQ2Xm1dyWMvxlqdIChX4F/oHu1GJ9V1IfOPnPmDP7+/gQEBLB8+XIefPDBrPmMjfddzdDZ1qeQV9Xbwa3vwswHYN7TTrPSeW2zxhR3e/bsoX///mRmZhIUFMRHH33kdkkmlywUrkTLQZCwCZa9AxGNof1otysyplCpX78+a9ascbsMcwWsT+FKdX8BGvaGb5+F7d+7XY3xQb7WdGt8w9X+XVkoXCk/f7hjLEQ0gqkjIGGL2xUZHxISEkJiYqIFg8lXqkpiYiIhISFXvA1rProawWEw+AsY2w0mD4BR30Foucu/zhR71apVIy4ujoSEBLdLMUVMSEgI1apVu+LXWyhcrTI1nDGSPr0Vpg23K5JMrgQGBlK7dm23yzDmAtZ8lB9qdHCuSNq5BOY9c/n1jTGmkLIzhfyS/YqkyMbO0BjGGONj7EwhP3V/ARrc5Jwt2BVJxhgfZKGQn/z8od9HdkWSMcZnWSjkt7NXJAUEwaS7IPmw2xUZY0yuWSh4Q5kaMHAynDgAXwyGtLwNjWuMMW6xUPCW6m3h9g9h708w80GwuWiNMT7Aq6EgIr1EZLOIbBORZ3N4voaILBKRNSKyTkR6e7OeAtf0NrjhZYj9Chb91e1qjDHmsrx2SaqI+APvATcAccAqEZmlqtlnqPkTMFVVPxCRJsBcoJa3anJFp8fgyA744S0oWxta3+12RcYYc1HePFNoB2xT1R2qmgp8AfQ9bx0FSnt+Dgf2ebEed4hA7zeh7vUw+3ewPW+zQRljTEHyZihUBfZmexznWZbdi8BQEYnDOUt4NKcNichoEYkRkRifHCvGPxDuGg8VGsDUYXBok9sVGWNMjtzuaB4EjFfVakBvYIKIXFCTqo5V1WhVjY6IiCjwIvNFSDgMngqBJWBifzhx0O2KjDHmAt4MhXigerbH1TzLsrsXmAqgqsuBEKCCF2tyV5nqMHgKnDoMkwdC6im3KzLGmHN4MxRWAfVFpLaIBAEDgVnnrbMH6A4gIo1xQsEH24fyoEor6Pcx7FsDX90HmRluV2SMMVm8Fgqqmg48AswHNuFcZRQrIi+LSB/Pak8C94nIL8BkYIQWh1lHGt0MvV6FX2fD/D9CMThkY4xv8Oooqao6F6cDOfuyv2T7eSPQ2Zs1FFrtH4Bje2DF+xBeFTrl2MdujDEFyobOdosI3PgKHN8HC/4EYZUh6k63qzLGFHMWCm7y83OGwkhOgBkPQMkIqHOd21UZY4oxty9JNYEhznSe5evBlKFwYIPbFRljijELhcKgRFkYOh2CSsHEO+HY3su/xhhjvMBCobAIr+YEQ2oyfN4PTh91uyJjTDFkoVCYVGzqNCUd3QmTbR4GY0zBs1AobGpfC7d9AHt+hBmj7eY2Y0yBslAojKLudC5X3fg1zH/ebm4zxhQYuyS1sOr0iHMPw4r3oFQkXPOk2xUZY4oBC4XC7Ma/QvIh+O5lCC0PbUa4XZExpoizUCjM/Pyc/oXTx2D2E86lq03On6fIGGPyj/UpFHb+gdD/M6jWFr4cBTsWu12RMaYIs1DwBUGhzjwM5evBF0Mg/me3KzLGFFEWCr6iRFkY+hWElnPuek7Y4nZFxpgiyELBl5SuDHfPBPGDCbdDUpzbFRljihgLBV9Tvq5zxnDmuBMMyYluV2SMKUIsFHxR5eYw6Atnkp5Jd8GZk25XZIwpIiwUfFWtznDnONi3FqYMgfQzbldkjCkCLBR8WaPe0PffzmWq00ZCRprbFRljfJyFgq9rORh6vwmb5zizt9kAesaYq2B3NBcF7e5z5mFY+AIEloBb33XuhjbGmDyyUCgquvzOCYYlf4egktDrNRBxuypjjI+xUChKuj3vBMOK95ypPbv/2e2KjDE+xkKhKBGBnq9AWjL88KYzPIYNuW2MyQMLhaJGBG5+G1JPOUNuB5aEDg+4XZUxxkdYKBRFfv7OkNtpp+DbZ5wzhtbD3K7KGOMD7BKVoso/AO78BOpeD7Meg/XT3a7IGOMDLBSKsoBgGDARanaCr0ZD7Ay3KzLGFHIWCkXd2bkYqrWF6ffCxlluV2SMKcQsFIqD4DAYMg2qtoHpI+HXOW5XZIwppLwaCiLSS0Q2i8g2EXn2Iuv0F5GNIhIrIpO8WU+xFlIahk6Hyi1g6nDYPM/tiowxhZDXQkFE/IH3gJuAJsAgEWly3jr1geeAzqraFPidt+oxQEi4MxdDpWYwdRhsWeB2RcaYQsabZwrtgG2qukNVU4EvgL7nrXMf8J6qHgVQ1UNerMcAlCgDd8+AyCbOkNtbF7pdkTGmEPFmKFQF9mZ7HOdZll0DoIGILBORFSLSK6cNichoEYkRkZiEhAQvlVuMlCjrBENEI/hiMGz7zu2KjDGFhNsdzQFAfaArMAj4SETKnL+Sqo5V1WhVjY6IiCjgEouo0HIw7Guo0MAJhu2L3K7IGFMIeDMU4oHq2R5X8yzLLg6YpappqroT2IITEqYgnA2GcnVh8iBnsh5jTLHmzVBYBdQXkdoiEgQMBM6/SH4mzlkCIlIBpzlphxdrMucrWR6Gz4JydWDSANhmfQzGFGdeCwVVTQceAeYDm4CpqhorIi+LSB/PavOBRBHZCCwCnlLVRG/VZC6iZAUYMdtpSpo8CDZ/63ZFxhiXiKq6XUOeREdHa0xMjNtlFE2nj8KEO+DAerhrHDS+1e2KjDH5RERWq2r05dZzu6PZFCYlysKwmVCllXOD24av3K7IGFPALBTMuULC4e6voHp7+PJe+GWK2xUZYwqQhYK5UHCYMyRGzc4w435Y87nbFRljCoiFgslZUEkYPBXqdoOvH4aYcW5XZIwpABYK5uKCQmHgZKjfE2b/Dn760O2KjDFeZqFgLi0wBAZ8Do1ugXlPww9vgY9dsWaMyT0LBXN5AUFw13iI6g/fvQwLX7BgMKaICnC7AOMj/APh9g+dTuhl70DKcbj5LfDzd7syY0w+ytWZgog8LiKlxfEfEflZRG70dnGmkPHzc4Kgy+9h9Thn3ueMNLerMsbko9w2H92jqseBG4GywN3Aa16ryhReItDjBejxImyYDlOGQtppt6syxuST3IaCeL73Biaoamy2ZaY46vIE3Pw2bJkPE++CMyfcrsgYkw9yGwqrRWQBTijMF5EwINN7ZRmf0PZeuOMj2P0jfNoHTh1xuyJjzFXKbSjcCzwLtFXVU0AgMNJrVRnf0fwuGDgRDsbCuN5wfL/bFRljrkJurz7qCKxV1WQRGQq0Bt7xXln5b0HsAWaujcffz48AP8HfT8777kdokD+hwf6EBvoTGhxAyaAAQoP9KRkUQOkSAZQLDaJMaBBBAXYl7zka3uQMizF5EPznRmfspAo2V5Ixvii3ofAB0EJEWgBPAh8DnwHXeauw/HbsdBpbD54kI1NJz1TP98ysx+kZyqnUdDJzcfl9WHAAZUsGUbZkEOVCAylfKpjK4SFUCg+hUmnne+XwEpQNDUSkmHS91L7WmZPh8zudYBgyHaq1cbsqY0we5Wo+BRH5WVVbi8hfgHhV/c/ZZd4v8VzenE9BVTmTnsmp1AySz6Q731PTST6TzvHT6Rw5lcrR5FSOJKdy9JTz/dipNBJOnOHQiZQLAiUowI/K4SHUKBdKzfKh1CpfkprlS1KrfCjVy4USElgEr/FP3A6f3wEnD0H/CVC/h9sVGWPI/XwKuT1TOCEiz+FcinqNiPjh9CsUKSJCSKA/IYH+lCsZlKfXpmdkcvhkKvuTTnPweAr7k1I4kJRC/LHT7D1yillr93E8JT3bvqBy6RDqRpaiQcUwGlYMo0GlMOpHlqJksA/fU1i+LtyzACb2g8kDoO970GKg21UZY3Ipt+8+A4DBOPcrHBCRGsAb3ivL9wT4+znNR+EhF13n2KlUdiWeYndiMrsOn2JXYjLbDp1k4k+7SUn77WKuamVL0LBiGI0qhxFVNZyoamWoEh7iO01RYRVhxFyYMsQZevvkIej8mNtVGWNyIdfTcYpIRaCpKYgmAAAbKUlEQVSt5+FKVT3ktaouoShOx5mRqew9corNB0+w5cAJNh88wdaDJ9mW4PSBAJQvGURUtXCae0KiebVwKpa+eAAVCulnnFCInQEdH4Eb/s+5K9oYU+DytflIRPrjnBksxrlp7V8i8pSqTr+qKg0A/n5CrQolqVWhJD2bVspanpKWwab9x1kfn8T6uCTWxyexZEtCVt9F1TIlaFurLNG1ytG2VjnqR5bCz68QnU0EBEO/T6BURVj+bzh5EPq+7wywZ4wplHLbfPRHnHsUDgGISASwELBQ8KKQQH9a1ShLqxpls5adTs1g4/7j/LL3GKt3H2XZ9kRmrt0HQOmQANrUdEKiQ53ytKgWToC/y5/M/fyg12tOMHz3EiQfhv6fQUhpd+syxuQot1cfrVfVqGyP/YBfsi8rKEWx+ehqqCp7j5xm1a4jxOw+Qsyuo2w9dBJwLp1tX6c8XeqVp3O9CtSLLOVuv8SaifDNY1ChIQyZCuHV3KvFmGImt81HuQ2FN4DmwGTPogHAOlV95qqqvAIWCpd3JDmVFTsSWbrtMMu2HWZ34ikAIsOC6VKvAl3qV6Brw8g8X2GVL7Z/D1OH/zbdZ+XmBV+DMcVQvoaCZ4P9gM6ehz+o6oyrqO+KWSjk3d4jp/hx+2GWbkvkx22HSUxORQRa1yjL9Y0iub5RJI0qhRXcWcTBWJjYH1KOOZP31L+hYPZrTDGW76FQWFgoXJ3MTCV233G++/Ug3/96iHVxSQBUCQ+hW6NIujeOpHO9CgQHePnGuuP7YVJ/JyBufhOi7/Hu/owp5vIlFETkBJDTCgKoqhZ4b6GFQv46dDyFRZsP8f2vh/hh62FOpWYQFhxA98aR9GpWma4NI7x35/WZkzB9JGxdAJ0fh+4v2iWrxniJnSmYPDuTnsGP2xP5dv0B5m88wLFTaYQG+dOtUSS9PQGR73dbZ6TDvKch5j/Q5DZnys/AQn7/hTE+yELBXJW0jEx+2nGEeRv2Mz/2AIdPphIc4EePxhW5rVVVrmsQkX+jxao69zEs+BNUbw8DJ0HJCvmzbWMMYKFg8lFGphKz6whz1u9nzrr9JCanUiY0kJujKnN7q6q0qVk2fzqpY2c6d0CXjITBX0DFple/TWMMYKFgvCQtI5OlWw8zY008CzYeICUtk2plS3Bby6rc3roqdSNKXd0O4lfD5MGQehL6fezM1WCMuWoWCsbrTp5JZ0HsAWasiWfZtsNkKrStVZYBbWvQO6oSoUFX2P9wfJ8zYc/+X6DHi04ntK8MBmhMIVUoQkFEeuHM0OYPfKyqr11kvX44Q2a0VdVLvuNbKBROh46n8NWaeKas2svOw8mEBQfQp2UVBrStTlTV8Lw3L6Wegq8fcgbTazEYbv2nM5aSMeaKuB4KIuIPbAFuAOKAVcAgVd143nphwBwgCHjEQsG3qSordx5hyqq9zFm/nzPpmTSuXJqBbatzW6uqhJfIwzQcqvC/12Hxq1C9Awz4HEpFeK94Y4qwwhAKHYEXVbWn5/FzAKr66nnr/RP4L/AU8AcLhaIj6XQas37Zx5RVe9gQf5zQIH9ub1WVYR1r0bBSWO43FDsDZjwIJSNg0GSo1Mx7RRtTROU2FLx5p1BVYG+2x3GeZVlEpDVQXVXnXGpDIjJaRGJEJCYhISH/KzVeEV4ikLs71GT2o9fwzSNduDmqMtNWx9Hzn0sYOHY589bvJz0j8/Ibano7jJwLmWnO/M+bvvF+8cYUU67dPuoZafVt4MnLrauqY1U1WlWjIyKs+cAXRVUL5427WrDiue48e1Mj9h45zYMTf+aavy/i399v5fDJM5feQNXWcN8iiGgIU4bC93+FzIyCKd6YYsS15iMRCQe2Ayc9L6kEHAH6XKoJyZqPioaMTOW7TQf5bPlulm47TFCAH3e0qsqoa+pQL/ISl7WmpcCcJ2Ht51D/RrjjIyhRpuAKN8ZHFYY+hQCcjubuQDxOR/NgVY29yPqLsT6FYmnboRN8smwXX66O40x6Jj0aRzL62rq0rXWRm+JUnWEx5j0DZWrAgIlQsUnBF26MD3G9T0FV04FHgPnAJmCqqsaKyMsi0sdb+zW+p15kGH+7PYplz17P493rs3r3Ufp/uJzb3v+Ruev3Z81TnUUE2o6C4bOdQfU+7uHcDW2MuWp285opdE6nZjD95zg+/mEHuxNPUaNcKPddW4e72lS7cMTW4/tg6jCIWwVdfg/X/wn8vDzstzE+yPXmI2+xUCg+MjKV/248wJj/7WDt3mNULB3M6GvrMrhdDUoEZXvjTz8Dc5+Cnz+Fut2d4TFCy7lXuDGFkIWCKTJUleXbE3n3+62s2HGECqWCGHVNHYZ2qEmp7EN5x4xzwqF0Zej/GVRp5V7RxhQyFgqmSFq16wjvfreVH7YepkxoIPd0rs3wTrV+u1M6LsaZAzr5EPR6FaLvtXGTjMFCwRRxa/ce49/fb2XhpkOEhQQwqksd7r2mtnPmcOoIfDUatv0Xmt0Jt74DwVc5eqsxPs5CwRQLsfuSePe7rcyPPUjZ0EAe7FqXYR1rEeIvsPQtWPQ3KF/PaU6KbOx2uca4xkLBFCu/7D3Gmws288PWw0SGBfPo9fUY0LYGQXuXwvR7nfkZbvkHtBjodqnGuMJCwRRLP+1I5M0Fm1m16yjVypbg8e71ub2ePwEzRsHuZdB6ONz0d5sH2hQ7Fgqm2FJV/rclgbcWbGF9fBL1Ikvx3I31uH7/R8iyf0DFKLhrHFSo73apxhQY1+9oNsYtIkLXhpHMeqQzY4a2JjNTuffztQza2ZNdN46D4/Hw4bWw5nNnyAxjTBYLBVNkiQi9mlVm/hPX8n99m7L14Em6zgrmL1U+JKViK/j6YfjyXkhJcrtUYwoNCwVT5AX6+3F3x1osfqorD3ery5TNGbTc9TCLqz2Axs6EMV1g7yq3yzSmULBQMMVGWEggT/VsxKI/dOXm5tUYuf1ahvMSJ1PS0U96wg9vQ2YuJv0xpgizUDDFTpUyJXirfwtmP9qF9Cpt6XTsJZYEdITvXoIJt8Hx/W6XaIxrLBRMsdW0SjgTR7Xn70Ov4Y/+v+fptPs4s+snMt7vCBu/drs8Y1xhoWCKtbOd0Quf7Eq16+/ntvRX2Hi6LEwdRvqX91sntCl2LBSMAUIC/Xmse30+fnIIHzX4kHfS74D1Uzn1Tgd05w9ul2dMgbFQMCabqmVK8O6QdnS4502eCvs7B5Mz0E9vJenrZ5x5G4wp4iwUjMlB+zrlefOJUSzrMZNp2oPwNWM4/HYnUuPXuV2aMV5loWDMRfj7CUOvbULXJz/n/SqvoskJyEfd2P31XyEj3e3yjPEKCwVjLqNi6RAeGv0QW/otYJl/W2queYM9b3Tm6M61bpdmTL6zUDAmlzo3b0SHZ2bzTYNXKHU6nlKfXs8vE/9IZlqq26UZk28sFIzJg5CgAG4d/AjH7lnKqpAutNj6b3a/3oH4X1e6XZox+cJCwZgrUKdmLTo+8zU/tP4nYWmHiZzci9XjnyIjza5QMr7NQsGYKyQiXNNnJBkPriCmVDfa7BrL3tfasWvdUrdLM+aKWSgYc5UqVqpChz9M56cO7xOacZzqX97CmrH3k5psd0Mb32OhYEw+EBHa9xpCwKMr+bFsX1rETyHpzdbsXDrV7dKMyRMLBWPyUbnyEVzzu0+J6TGFY4RSe+F9bH23D6lH9rpdmjG5YqFgjBe0u6YnkU/+xOzIB6iWuJz0d9ty8L//hMwMt0sz5pIsFIzxkvBSodzy0Ous6j2XtTSk4rIXOPSPLmTErXG7NGMuykLBGC+7tn1bGjw5n48q/gk5Ho983I0T0x+BU0fcLs2YC3g1FESkl4hsFpFtIvJsDs//XkQ2isg6EflORGp6sx5j3FIhLIRRD/yBH2+az0S9iRLrJ3LmHy3QlR9bk5IpVLwWCiLiD7wH3AQ0AQaJSJPzVlsDRKtqc2A68Hdv1WOM20SEvh0ac/0Tn/DHSh+wOqUaMvdJ0j64FvascLs8YwDvnim0A7ap6g5VTQW+APpmX0FVF6nqKc/DFUA1L9ZjTKFQtUwJXr1/AFt6TuTxjMdJTNgPn/SEGQ/AiYNul2eKOW+GQlUg+3V4cZ5lF3MvMC+nJ0RktIjEiEhMQkJCPpZojDv8/IQRXerw0MNPcX/pD3gvvQ8Z66ah/2oNS/8JaSlul2iKqULR0SwiQ4Fo4I2cnlfVsaoararRERERBVucMV7UsFIYUx7tQUK7Z+me8jortTEsfAHeawsbvgRVt0s0xYw3QyEeqJ7tcTXPsnOISA/gj0AfVbXRxEyxExLoz4t9mvLnYbfyYOYzjMz4I0czQmD6PfCfG2CvjcBqCo43Q2EVUF9EaotIEDAQmJV9BRFpBXyIEwiHvFiLMYVe98YV+fbxa0ivdR1tEv7CpxF/IPPoHicYpo2Ao7vcLtEUA14LBVVNBx4B5gObgKmqGisiL4tIH89qbwClgGkislZEZl1kc8YUC5GlQ/h0ZDue692Uv+5rQ4+0t9nX4jHY/C38uy0s+JPd32C8StTH2iyjo6M1JibG7TKM8br1cUk8POln4o+d5sWuZRma/Bnyy2QILg2dH4X2D0JwKbfLND5CRFaravTl1isUHc3GmAtFVQtn9mNduLFJRf78/RHuTbqHpBGLoVZn+P6v8G5L+OlDSLeuOJN/LBSMKcRKhwTy/pDWvNSnKT9sTeCmyYn83Pl9uPe/ENEI5j0N/46GtZPszmiTLywUjCnkRIThnWrx5YOd8PcX+o9Zzkc7K6DDZsHQr6BEOZj5IHzQCTZ+DZmZbpdsfJiFgjE+onm1Msx+9Bq6N47klbmbuG/Cao5VuQZGL4a7PnXOFKYOgzFdIHaGhYO5IhYKxviQ8BKBjBnahr/c0oT/bUngln8tZcO+49D0Nnj4J7jjY8hMcy5h/aAjrJ9uzUomTywUjPExIsI9XWoz9f6OpGco/T74kS9Xx4GfPzS/Cx5aAf3+46z85b3wfkdYN83CweSKhYIxPqpVjbLMfqwLrWqU4clpv/DnmRtITc90wiHqTnhwOdw13nn81Sh4rx38PMGuVjKXZKFgjA+rUCqYz+9tz33X1GbCit0MHLucg8c9g+n5+UHT2+GBZdB/AgSWgFmPwDstYNk7kJLkbvGmULKb14wpImav28fT09cRGhTA+0Na0652uXNXUIUdi5xRWHf+z7kJLvoe6PAghFVyp2hTYHJ785qFgjFFyJaDJ7h/wmr2HjnFH29uzIhOtRCRC1fct8Y5W9j4NfgFQIuB0PFRiGhQ8EWbAmGhYEwxdTwljSen/sJ/Nx7ktpZVeK1fc0IC/XNe+cgO+PHfsHYipKdAvR7Q/gGo291pfjJFhoWCMcVYZqby/uJtvPXfLURVDWfs3dFUCg+5+AtOJsDqcbDqYzh5EMrVhfb3Q8vBEBxWcIUbr7FQMMawcONBHv9iDaHBAYy9uw2tapS99AvSU2HTLPhpDMStgqAwaDUU2t0H5esWTNHGKywUjDGA088w6tMYDhxP4fV+UdzeKpdTocethpUfwoavIDMd6l4PbUZAw5vAP9CrNZv8Z6FgjMlyNDmVhyb+zPIdidx/bR2e7tUIf78cOqBzcuKg07T082dwPB5KRjpnD62HQbna3i3c5BsLBWPMOdIyMnn5m41MWLGbbg0jeGdQK0qH5OETf2YGbFsIq8fDlm9BM6FOV8/Zw80QEOSdwk2+sFAwxuTo8xW7eXFWLLUqlOTjYdHUqlAy7xtJineuWPr5M0jaC6EVnLuoWwyEyi0hp8tgjassFIwxF7V8eyIPTVxNpsKYoW3oWLf8lW0oMwO2L4KfP3XOHjJSoUJDJxya94fwXPZfGK+zUDDGXNKexFPc++kqdiUm8+odzbmzzVW+gZ8+CrEz4ZcvYO8KQKD2NdBiEDS+1S5tdZmFgjHmspJOp/HQxNUs25bII93q8fsbGuCX2w7oSzmyA9ZNdQLi6E4ICHFujGt6OzToaQHhAgsFY0yupGVk8ueZG/hi1V5uaV6ZN+9qcfE7oPNKFfauhNivnLOIkwcsIFxioWCMyTVV5cMlO3ht3q+0rlGGj4ZFU75UcP7uJDMT9v7kzAq38etzA6LhTVC/J5SKyN99miwWCsaYPJu7fj9PTFlLxdIhfDKiLfUiS3lnR9kDYtM3cGIfIFCtLTTsBQ17Q0Qju4opH1koGGOuyJo9R7nvsxhS0zMZc3cbOtWt4N0dqsKBdbB5nvO1f62zvExN5wyi3g1QsxMEhXq3jiLOQsEYc8X2HjnFPeNXsfNwMq/3a06/q70yKS+O73Mub938LexYDBlnwD8IanSAOt2c4TYqNbdRXPPIQsEYc1WSTqfx4Oer+XF7Ik/3asiD19XNeW4Gb0o9BXt+dO6F2L4IDsU6y0PLO3dT174WanaG8vWsqekyLBSMMVctNT2TP0z7hVm/7GNYx5q8cGvT3I+Z5A0nDjpnD9u/d2aRO3nQWV4yAmp0dJqZanSESlHO3NQmS25DIaAgijHG+KagAD/+OaAllcJDGLtkB4eOn+GfA1vm3yWreRVWEVoMcL5UIXE77F4Ge5Y73zfNctYLLu10Wldt4/lqDaUi3anZx9iZgjEmV/6zdCd/nbORtjXL8dGwaMJDC+Hw2UnxvwXE3pVwaKMzcB9AeHWo0uq3kKjYDELLXXp7RYg1Hxlj8t3sdfv4/ZRfqFk+lPH3tKNqmRJul3Rpqcmwfx3Er4Z9Pzvfj+767fmwKlCxCVRsCpFNnZ8rNICAfL5HoxCwUDDGeMXy7YmMnhBDyaAAxt/TlkaVSrtdUt4kJ8L+NXAwFg5udL4f3uwM5gfgFwBlazud1+Xrer7qOVOUhlX22aueCkUoiEgv4B3AH/hYVV877/lg4DOgDZAIDFDVXZfapoWCMe779cBxRnyyiuQz6YwdFn3lo6wWFhlpTv/EwQ1Ok9PhLZC4A45sh/SU39YLDIWytZzRX0tXdb6f/Spd1fkqpPNKuB4KIuIPbAFuAOKAVcAgVd2YbZ2HgOaq+oCIDARuV9UBl9quhYIxhcO+Y6cZ/slKdiee4t1BLenVrLLbJeW/zExntrkj2yFxmxMUR3dCUpzzdfrIha8JKeNcDVUyAkqW/+3n0ApQogwElXLGe8r+FVQKAkt49bLawhAKHYEXVbWn5/FzAKr6arZ15nvWWS4iAcABIEIvUZSFgjGFx7FTqdwzfhVr9x6jVoWS+BezewWC9QwRmQlEagIRmYeJ0MOUzUwiXJMoo799L60n8OPy77WpBJBBAGkEkC4BpOP5En9ASGjzBG1uHnVFtRaGS1KrAnuzPY4D2l9sHVVNF5EkoDxwOPtKIjIaGA1Qo0YNb9VrjMmjMqFBfD6qPe8s3ErcsdP4Wh/l1SsFlOcEjTgB7LjIWqIZlMw4TmjmSYIzT1MiM5mQzFPZvpIJ0hT8NR1/zSBA0/DXDPxJI0DT8dd0QAks5f1mOp+4T0FVxwJjwTlTcLkcY0w2oUEBPNe7sdtlmHzizW70eKB6tsfVPMtyXMfTfBSO0+FsjDHGBd4MhVVAfRGpLSJBwEBg1nnrzAKGe36+E/j+Uv0JxhhjvMtrzUeePoJHgPk4l6R+oqqxIvIyEKOqs4D/ABNEZBtwBCc4jDHGuMSrfQqqOheYe96yv2T7OQW4y5s1GGOMyT3fvDXPGGOMV1goGGOMyWKhYIwxJouFgjHGmCw+N0qqiCQAu6/w5RU4727pYsCOuXiwYy4eruaYa6pqxOVW8rlQuBoiEpObsT+KEjvm4sGOuXgoiGO25iNjjDFZLBSMMcZkKW6hMNbtAlxgx1w82DEXD14/5mLVp2CMMebSituZgjHGmEuwUDDGGJOlSIaCiPQSkc0isk1Ens3h+WARmeJ5/icRqVXwVeavXBzz70Vko4isE5HvRKSmG3Xmp8sdc7b1+omIiojPX76Ym2MWkf6ef+tYEZlU0DXmt1z8bdcQkUUissbz993bjTrzi4h8IiKHRGTDRZ4XEXnX8/tYJyKt87UAVS1SXzjDdG8H6gBBwC9Ak/PWeQgY4/l5IDDF7boL4Ji7AaGenx8sDsfsWS8MWAKsAKLdrrsA/p3rA2uAsp7HkW7XXQDHPBZ40PNzE2CX23Vf5TFfC7QGNlzk+d7APECADsBP+bn/onim0A7Ypqo7VDUV+ALoe946fYFPPT9PB7qL+PSM45c9ZlVdpKqnPA9X4MyE58ty8+8M8H/A60BKQRbnJbk55vuA91T1KICqHirgGvNbbo5ZgdKen8OBfQVYX75T1SU488tcTF/gM3WsAMqISOX82n9RDIWqwN5sj+M8y3JcR1XTgSTA+zNie09ujjm7e3E+afiyyx6z57S6uqrOKcjCvCg3/84NgAYiskxEVohIrwKrzjtyc8wvAkNFJA5n/pZHC6Y01+T1/3ueeHWSHVP4iMhQIBq4zu1avElE/IC3gREul1LQAnCakLrinA0uEZEoVT3malXeNQgYr6pviUhHnNkcm6lqptuF+aKieKYQD1TP9riaZ1mO64hIAM4pZ2KBVOcduTlmRKQH8Eegj6qeKaDavOVyxxwGNAMWi8gunLbXWT7e2Zybf+c4YJaqpqnqTmALTkj4qtwc873AVABVXQ6E4AwcV1Tl6v/7lSqKobAKqC8itUUkCKcjedZ568wChnt+vhP4Xj09OD7qsscsIq2AD3ECwdfbmeEyx6yqSapaQVVrqWotnH6UPqoa4065+SI3f9szcc4SEJEKOM1JOwqyyHyWm2PeA3QHEJHGOKGQUKBVFqxZwDDPVUgdgCRV3Z9fGy9yzUeqmi4ijwDzca5c+ERVY0XkZSBGVWcB/8E5xdyG06Ez0L2Kr14uj/kNoBQwzdOnvkdV+7hW9FXK5TEXKbk85vnAjSKyEcgAnlJVnz0LzuUxPwl8JCJP4HQ6j/DlD3kiMhkn2Ct4+kleAAIBVHUMTr9Jb2AbcAoYma/79+HfnTHGmHxWFJuPjDHGXCELBWOMMVksFIwxxmSxUDDGGJPFQsEYY0yWIndJqjEFTUQygPU4lw2mA58B/7A7ao0vslAw5uqdVtWWACISCUzCGaDtBVerMuYK2H0KxlwlETmpqqWyPa6DcyduBV++icoUT9anYEw+U9UdOHffRrpdizF5ZaFgjDEmi4WCMfnM03yUARSFgQdNMWOhYEw+EpEIYAzwb+tPML7IOpqNuUo5XJI6AXjbLkk1vshCwRhjTBZrPjLGGJPFQsEYY0wWCwVjjDFZLBSMMcZksVAwxhiTxULBGGNMFgsFY4wxWf4fFZA9lyqfmc8AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "x = np.arange(0,1,.001)\n",
    "M_masked = 0.5\n",
    "y = M_masked - x**2\n",
    "y = np.where(y>0,y,0)\n",
    "plt.plot(x,y,label=\"masked non match\")\n",
    "x = np.arange(0,1,.001)\n",
    "M_background = 1.0\n",
    "y = (M_background - x)\n",
    "y = np.where(y>0,y,0)\n",
    "y = y**2\n",
    "plt.plot(x,y,label=\"background non match\")\n",
    "plt.title(\"Non-match Loss - VARIATION 2\")\n",
    "plt.xlabel(\"D\")\n",
    "plt.ylabel(\"loss\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "x = np.arange(0,0.5,.001)\n",
    "M_masked = 0.5\n",
    "y = M_masked - x**2\n",
    "y = np.where(y>0,y,0)\n",
    "plt.plot(x,y,label=\"first part\")\n",
    "x = np.arange(0.5,1.0,.001)\n",
    "M_background = 1.0\n",
    "y = (M_background - x)\n",
    "y = np.where(y>0,y,0)\n",
    "y = y**2\n",
    "plt.plot(x,y,label=\"second part\")\n",
    "plt.title(\"Non-match Loss - VARIATION 2\")\n",
    "plt.xlabel(\"D\")\n",
    "plt.ylabel(\"loss\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "x = np.arange(0,1,.001)\n",
    "M_masked = 0.5\n",
    "y = M_masked - x\n",
    "y = np.where(y>0,y,0)\n",
    "y = y**2\n",
    "plt.plot(x,y,label=\"masked non match\")\n",
    "x = np.arange(0,1,.001)\n",
    "M_background = 0.5\n",
    "y = (M_background - x)*(M_masked/M_background)\n",
    "y = np.where(y>0,y,0)\n",
    "y = y\n",
    "plt.plot(x,y,label=\"background non match\")\n",
    "plt.title(\"Non-match Loss - VARIATION 3\")\n",
    "plt.xlabel(\"D\")\n",
    "plt.ylabel(\"loss\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "x = np.arange(0,1,.001)\n",
    "M_masked = 0.5\n",
    "y = M_masked - x\n",
    "y = np.where(y>0,y,0)\n",
    "y = y**2\n",
    "plt.plot(x,y,label=\"masked non match\")\n",
    "x = np.arange(0,1,.001)\n",
    "M_background = 1.0\n",
    "y = (M_background - x)*(M_masked/M_background)\n",
    "y = np.where(y>0,y,0)\n",
    "y = y\n",
    "plt.plot(x,y,label=\"background non match\")\n",
    "plt.title(\"Non-match Loss - VARIATION 3\")\n",
    "plt.xlabel(\"D\")\n",
    "plt.ylabel(\"loss\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
